如何在AWS设备场上加速硒测试?

时间:2020-02-27 09:54:13

标签: selenium aws-device-farm

我正在使用Python在AWS设备场上进行测试。似乎开始硒需要很长时间。这是我使用的代码:

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()

输出:

Your IP is: 100.10.10.111
took: 99.89s

使用现有的selenium-hub基础结构,在不到2秒的时间内即可获得IP!

有什么方法可以从根本上减少时间?

1 个答案:

答案 0 :(得分:1)

要减少完整测试套件执行的总体执行时间,请利用默认情况下免费提供的50个并发会话。选中此link。例如:

让我们假设以下细节

  • 一个测试套件具有200个硒测试用例
  • 每个测试用例大约需要10秒钟执行
  • 一个AWS Device Farm Selenium会话大约需要60秒才能启动

然后,我将通过每个会话运行4个测试用例的并发批处理,将200个测试用例分为50个并发会话。

总执行时间=(60秒开始每个会话+ 10秒开始所有50个并发会话,每秒5个会话的速率+ 4 * 10秒在每个会话中执行测试用例)= 60+ 10 + 40 = 110秒以完成完整的测试套件执行

地点

如果您是现有的selenium-hub基础设施,并且可以假设以下详细信息

  • 要执行的200个硒测试用例
  • 2秒开始会话
  • 假设最多可以运行10个并发会话

总执行时间= 2秒以启动每个会话+ 20 * 10秒以在每个会话中执行测试用例= 200 + 2 = 202秒以完成完整的测试套件执行