我正在使用 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()
Output:
Your IP is: 100.10.10.111
took: 99.89s
使用现有的 selenium-hub 基础设施,不到 2 秒即可获得 IP!
有什么办法可以从根本上减少时间吗?
要减少完整测试套件执行的总体执行时间,请利用默认情况下免费提供的 50 个并发会话。检查这个link https://docs.aws.amazon.com/devicefarm/latest/testgrid/techref-limits.html。例如:
让我们假设以下细节
- 一个测试套件有 200 个 Selenium 测试用例
- 每个测试用例执行大约需要 10 秒
- 一个 AWS Device Farm Selenium 会话大约需要 60 秒才能启动
然后我将通过每个会话运行 4 个测试用例的并发批次,将 200 个测试用例划分为 50 个并发会话。
总执行时间 =(启动每个会话 60 秒 + 启动所有 50 个并发会话(每秒 5 个会话)的 10 秒 + 4*10 秒执行每个会话中的测试用例)= 60+10+40 = 110 秒完成完整的测试套件执行
WHEREAS
如果您是现有的 selenium-hub 基础设施,并且假设以下详细信息
- 200 个要执行的 Selenium 测试用例
- 2 秒开始会话
- 假设您最多可以运行 10 个并发会话
总执行时间 = 启动每个会话 2 秒 + 20*10 秒执行每个会话中的测试用例 = 200+2 = 202 秒完成完整的测试套件执行
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)