我一直在使用pytest和selenium chromedriver开发一个测试套件,以自动化一个网站,该网站利用用户的网络摄像头在用户使用网站时(经他们的许可!)拍摄照片和录制视频。
最终目标是使用官方的selenium / standalone-chrome容器来利用Docker-Compose,该容器反过来针对SUT的docker容器运行我的测试。
在本地运行测试时(即,在下面的代码中采用“本地”执行路径),使用--use-fake-device-for-media-stream
和--use-fake-ui-for-media-stream
标志不会遇到问题。
但是,当我尝试通过远程WebDriver会话运行完全相同的测试时,SUT会报告浏览器不支持网络摄像头API,并且需要更新浏览器。
def browser(request):
browser_args = Options()
browser_args.add_argument("--use-fake-device-for-media-stream")
browser_args.add_argument("--use-fake-ui-for-media-stream")
browser = request.config.getoption("--browser")
if browser == "local":
browser = webdriver.Chrome(options=browser_args)
elif browser == "remote":
browser_args.add_argument("--headless")
browser = webdriver.Remote(
command_executor=f"http://{request.config.getoption('--selenium-server')}:4444/wd/hub", options=browser_args)
据我所知,本地和远程Webdriver都应使用相同的参数,但这是我第一次使用远程Webdriver,所以我不确定。任何帮助或指导将不胜感激。