在Windows本地运行Robot Framework编写的自动化测试时,它适用于Chrome/Edge。基本上浏览器选项,如headless被考虑在内。如果它在Selenium Grid上运行(作为Linux操作系统的docker容器),则浏览器选项参数仅适用于Chrome节点。浏览器Edge会在没有任何设置参数的情况下正常启动。
以下是特定浏览器的代码摘录:
Launch Browser
[Documentation] Opens desired browser type.
Run keyword if '${BROWSER}'=='edge'
... Run Edge
... ELSE
... Run Chrome
Maximize browser window
Run Edge
[Documentation] Set configuration and open Edge browser.
${EDGE_OPTIONS} Catenate SEPARATOR=
... use_chromium=True;add_argument("--headless=true");
... add_argument("--no-sandbox");add_experimental_option("excludeSwitches", ["enable-logging"]);
... add_argument("--proxy-server=http://myproxy.domain.com:8080")
Open Browser about:blank browser=${BROWSER} options=${EDGE_OPTIONS} remote_url=${SELENIUM_GRID_HUB_URL}
Run Chrome
[Documentation] Set configuration and open Chrome browser
${CHROME_OPTIONS} Catenate SEPARATOR=
... add_experimental_option("excludeSwitches", ["enable-logging"]);add_argument("--headless=true");
... add_argument("--proxy-server=http://myproxy.domain.com:8080")
Open Browser about:blank browser=${BROWSER} options=${CHROME_OPTIONS} remote_url=${SELENIUM_GRID_HUB_URL}
任何建议为什么浏览器选项被忽略的边缘在Linux Docker容器?
在我们的项目中,我们遇到了同样的问题。我们的项目使用Selenium 3.141.59编写。我们的项目是基于java的,为了能够使用MS Edge Chromium,我们必须添加一个由微软提供的新服务,见这里。
我们将该服务添加到我们的EdgeDriverFactory中,并且我们能够使用本地Edge Chromium浏览器进行测试。然而,当构建RemoteWebDriver与我们的selenium网格一起使用时,当我们试图使用Edge Driver Service构建它时,它出现了问题
Cannot resolve constructor 'RemoteWebDriver(java.net.URL, com.microsoft.edge.seleniumtools.EdgeDriverService)'
根据您的经验,如果不能添加服务构造函数,Edge浏览器将启动,但没有任何设置的参数(选项),即使使用Selenium Grid v4。
我们已经将我们的项目迁移到Selenium 4.0.0作为POC,到目前为止,我们通过Selenium Grid v4测试Edge Chromium浏览器没有任何问题(我们使用由Selenium提供的基于docker的官方集线器和节点)。
Edge Chromium浏览器启动时,所有参数都就位了,没有问题,就像我们测试本地浏览器时一样。