How to speed up selenium tests on AWS device farm?

天大地大妈咪最大 提交于 2020-05-17 03:46:13

问题


I'm using Python for testing on AWS device farm. It seems that starting a selenium takes very very long. This is the code I use:

from time import time

from boto3 import client
from selenium import webdriver


def main():
    start = time()

    device_farm_client = client("devicefarm", region_name='us-west-2')

    test_grid_url_response = device_farm_client.create_test_grid_url(
        expiresInSeconds=666,
        projectArn="arn:aws:devicefarm:us-west-2:..."
    )

    driver = webdriver.Remote(
        command_executor=test_grid_url_response['url'],
        desired_capabilities=webdriver.DesiredCapabilities.CHROME,
    )

    driver.get('https://api.ipify.org')
    print(f"Your IP is: {driver.find_element_by_tag_name('pre').text}")

    driver.quit()

    print(f"took: {time() - start:.2f}")


if __name__ == '__main__':
    main()

Output:

Your IP is: 100.10.10.111
took: 99.89s

Using existing selenium-hub infrastructure the IP is obtained in less than 2 seconds!

Is there any way how to reduce the time radically?


回答1:


To reduce the overall execution time for complete test suite execution take advantage of the 50 concurrent sessions given you by default at no cost. Check this link. For eg:

Lets assume following details

  • one test Suite has 200 Selenium test cases
  • each test case takes around 10 seconds to execute
  • One AWS Device Farm Selenium Session takes around 60 seconds to start

then I will divide my 200 test cases into 50 concurrent sessions by running concurrent batches of 4 test cases per session.

Total Execution Time = (60 seconds to start each session + 10 seconds to start all 50 concurrent sessions with rate of 5 sessions per second + 4*10 seconds to execute the test cases in each session) = 60+10+40 = 110 seconds to finish complete test suite execution

WHEREAS

If you are existing selenium-hub infrastructure and lets say following details are assumed

  • 200 Selenium test cases to execute
  • 2 seconds to start a session
  • assume at max you can run 10 concurrent sessions

Total Execution Time = 2 seconds to start each session + 20*10 seconds to execute the test cases in each session = 200+2 = 202 seconds to finish complete test suite execution



来源:https://stackoverflow.com/questions/60430453/how-to-speed-up-selenium-tests-on-aws-device-farm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!