如何使用Python和Selenium禁用AWS Device Farm视频录制?
如何在Python Selenium + AWS Device Farm Test Grid中禁用视频录制
问题背景
你已经知道通过AWS CLI的aws devicefarm schedule-run命令,在测试参数中设置video_recording: "false"可以禁用视频录制,但在使用Python的boto3和Selenium连接Test Grid时(通过create_test_grid_url获取临时会话URL),不知道如何实现同样的效果。
解决方案
直接使用create_test_grid_url创建的临时会话无法直接传递视频录制禁用参数——这个API仅用于生成即时的Selenium Grid访问URL,不支持自定义测试配置。要在代码中精准控制视频录制,你需要改用schedule_run API启动Selenium测试运行,在测试参数中明确禁用视频录制,再获取对应运行的Test Grid会话URL来连接Selenium。
修改后的代码示例
from boto3 import client from selenium import webdriver import time def main(): # 替换为你的AWS资源ARN PROJECT_ARN = "arn:aws:devicefarm:us-west-2:..." DEVICE_POOL_ARN = "arn:aws:devicefarm:us-west-2:..." TEST_NAME = "Selenium_Test_No_Video" device_farm_client = client("devicefarm", region_name='us-west-2') # 安排带禁用视频配置的Selenium测试运行 schedule_run_response = device_farm_client.schedule_run( projectArn=PROJECT_ARN, devicePoolArn=DEVICE_POOL_ARN, name=TEST_NAME, test={ "type": "SELENIUM", "parameters": { "video_recording": "false" # 核心参数:禁用视频录制 } } ) run_arn = schedule_run_response['run']['arn'] # 等待测试运行初始化完成(设备准备需要时间) while True: run_status = device_farm_client.get_run(arn=run_arn)['run']['status'] if run_status == "READY": break print(f"等待测试运行就绪,当前状态:{run_status}") time.sleep(10) # 获取关联到该运行的Test Grid会话URL test_grid_url_response = device_farm_client.create_test_grid_url( expiresInSeconds=3600, projectArn=PROJECT_ARN, runArn=run_arn # 绑定到已配置禁用视频的运行 ) # 连接Selenium Remote并执行测试 driver = webdriver.Remote( command_executor=test_grid_url_response['url'], desired_capabilities=webdriver.DesiredCapabilities.CHROME, ) try: driver.get('https://api.ipify.org') print(f"Your IP is: {driver.find_element_by_tag_name('pre').text}") finally: driver.quit() # 测试完成后及时终止运行,避免不必要的费用 device_farm_client.stop_run(arn=run_arn) if __name__ == '__main__': main()
关键细节说明
schedule_run配置:测试类型指定为SELENIUM,并通过test.parameters.video_recording设置为"false",这是禁用视频录制的核心配置。- 等待运行就绪:调用
schedule_run后,Device Farm需要时间初始化设备和加载配置,因此需要轮询等待运行状态变为READY。 - 关联运行ARN:调用
create_test_grid_url时传入runArn,确保生成的会话URL绑定到已配置禁用视频的测试运行,而非使用项目默认配置。 - 资源清理:测试完成后调用
stop_run可以及时终止运行,避免产生额外的设备占用费用。
内容的提问来源于stack exchange,提问作者Ikar Pohorský
相关产品推荐
相关产品推荐

