Edge浏览器选项在运行为Selenium Grid的Linux Docker容器上被忽略



在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浏览器启动时,所有参数都就位了,没有问题,就像我们测试本地浏览器时一样。

最新更新