tebelorg / RPA-Python

Python package for doing RPA

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Turbo Mode option run 10X faster (test b4 use, only works for some apps) [done]

kensoh opened this issue · comments

Turbo Mode

Demo here. Added turbo_mode option to run 10X faster than normal human speed. See below for benchmark details.

r.init(turbo_mode = True)

This is added in v1.45, available with pip install rpa --upgrade

Downsides

Most websites and desktop apps are not designed for the super-human speed user. If your RPA runs at a speed beyond what those websites are designed and tested for, you are surely going to run into problems with some apps. Problems could be fields and data not filling up properly, not triggering expected validations, form submissions with missing data, account being blocked etc.

And the problems might happen randomly, including working on your PC but not working on another PC due to difference in CPU speed. Because of this, using turbo mode option is not recommended. You may save some cheap computer time, but if something is broken or does not work, you may end up spending expensive human time (your time) to troubleshoot or fix.

So, in general, it doesn't make sense to give up what is important (reliability and trusted to always work, cheap computer cost) for what is relatively less important (super-fast execution of automation, much faster than doing it manually).

Why add this

I can see why this is useful for some users for some specific scenarios. For eg, data collection from apps, data entry in web applications that can handle super-human speed reliably, as part of a chatbot doing backend RPA for user, fast and rapid prototyping, and perhaps taking part in RPA competitions etc. Thoroughly test for your use case before using!

Although the downsides are huge, as TagUI and its various flavours like RPA for Python becomes more mature, it make sense to support a broader range of use cases instead of rejecting them as edge cases. With diversity, the ecosystem can flourish.

The additional cost of computation of this implementation for RPA for Python is 4ms. On a 6 year-old low-end Mac laptop, this is the additional overhead needed during initialisation to set up TagUI process to be turbo mode or not turbo mode. This is a relatively small cost 0.1%, if you estimate an RPA workflow taking 4 seconds. In practice, most workflows should take longer and this small cost of adding < 0.1% more to the execution time is humanly insignificant.

Estimated improvements in speed should be more than 10X. The changes specifically -

  • reduce intentional communication delays to Chrome from 100ms to 10ms (ie 20ms round-trip)
  • reduce delays to visual and desktop automation from 500ms to 50ms (ie 100ms round-trip)
  • instantly 'paste' into webpages the whole string instead of character by character
  • instantly move the mouse cursor for visual automation instead of 1s to move

14X faster using RPA Challenge example as benchmark - to fill up 70 fields from Excel data

Normal Mode using r.init() (turbo_mode is False by default)

normal

Turbo Mode using r.init(turbo_mode = True)

turbo

Line breaks don't work well,how i do?

Hi @songwp2024, can you kindly tell me more what do you mean?
Do you have a simple script that can replicate the problem you are seeing?

Hi @songwp2024, can you kindly tell me more what do you mean? Do you have a simple script that can replicate the problem you are seeing?

after i setted faster mode, I use r.type('inputid',value) ,and value include '\n', and '\n' is not work。for example:
valueStr = "COMERCIALIZADORA GRAM BEL,\nS.A.DE C.V"
r.type('//*[@id="' + elementId + '"]', '[clear]' + valueStr )
'\n' not Line breaks

Hi @songwp2024 this is known limitation. Turbo mode uses some shortcuts which will not work for some use cases. In turbo mode, the text to be entered is instantly updated to the textbox, instead of simulating typing into it. Thus line feed character won't trigger event on the textbox. Will have to look for other ways to do your scenario or don't use turbo mode.