selenium - 如何加快 AWS 设备场上的 Selenium 测试速度?

标签 selenium aws-device-farm

我正在使用 Python 在 AWS 设备场上进行测试。看来开始使用 Selenium 需要非常非常长的时间。这是我使用的代码:

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!

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

最佳答案

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

让我们假设以下细节

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

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

总执行时间 =(启动每个 session 60 秒 + 启动所有 50 个并发 session (每秒 5 个 session )的 10 秒 + 4*10 秒执行每个 session 中的测试用例)= 60+ 10+40 = 110 秒完成完整的测试套件执行

鉴于

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

  • 要执行 200 个 Selenium 测试用例
  • 2 秒开始 session
  • 假设您最多可以运行 10 个并发 session

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

关于selenium - 如何加快 AWS 设备场上的 Selenium 测试速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60430453/

相关文章:

javascript - 我怎样才能用selenium找出html变量的值

javascript - FluentAutomation 和查找元素同级

node.js - AWS - Amazon Device Farm 与适用于 iOS 设备的 NodeJS 中的 Appium 测试的兼容性

java - 如何在 AWS Device Farm 中运行 maven 命令

selenium - WebDriver - sendKeys(input) 在 sendKeys(Keys.RETURN) 之前未完成

python - Selen重复打印相同的信息

Python:带有 PhantomJS 空页面源的 Selenium

mobile - Robot Framework - 如何连接到 Amazon Device Farm

android - AWS Device Farm 获取可用设备列表