Python Selenium中的Chrome浏览器版本

Python Selenium中的Chrome浏览器版本,python,selenium,google-chrome,selenium-chromedriver,browser-automation,Python,Selenium,Google Chrome,Selenium Chromedriver,Browser Automation,我已经在Ubuntu服务器中设置了一个Selenium Grid,并在Ubuntu桌面中设置了一个节点Google Chrome节点上的版本是版本85.0.4183.83(官方版本)(64位)。我创建会话的python代码是 # Add Chrome options options = webdriver.ChromeOptions() options.add_argument("--disable-extensions") options.set_capability(&q

我已经在Ubuntu服务器中设置了一个Selenium Grid,并在Ubuntu桌面中设置了一个节点Google Chrome节点上的版本是
版本85.0.4183.83(官方版本)(64位)
。我创建会话的python代码是

# Add Chrome options
options = webdriver.ChromeOptions()
options.add_argument("--disable-extensions")
options.set_capability("browserVersion", "85.0.4183.83")
options.set_capability("platformName", "linux")

# Open a remote browser Session
driver = webdriver.Remote(
    command_executor='http://192.168.56.7:4444/wd/hub',
    options=options
)
但是当我传递
options.set_能力(“browserVersion”,“85.0.4183.83”)
时,它会给出错误

selenium.common.exceptions.WebDriverException:消息:转发新会话时出错找不到:功能{browserName:chrome,browserVersion:85.0.4183.83,goog:chromeOptions:{args:[--disable extensions],extensions:[]},平台名:linux,版本:}

但如果没有这条线,它绝对可以工作

另外,想知道是否有任何选项只传递浏览器的主要版本,如
85
,而不传递确切的版本号,如
85.0.4183


多亏了大家的支持。

解决了这个问题。由于版本信息未传递到中心,因此无法验证版本信息。因此,当从节点连接到集线器时,必须通过nodeConfig

节点配置.json

{
  "capabilities": [
    {
      "browserName": "firefox",
      "browserVersion": "79.0"
    },
    {
      "browserName": "chrome",
      "browserVersion": "85.0"
    }
  ]
}
然后使用启动连接

java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://[HUB-IP]:4444/grid/register/ -nodeConfig node-config.json
现在通过
选项。设置功能(“browserVersion”,“85.0”)
将起作用。因此,使用此选项,您现在可以指定要测试的操作系统浏览器,以及浏览器版本


Ref:-

案例为chrome,不允许您下载以前的版本。您可以选择使用当前版本。但一旦你重新创建了虚拟机,它就会安装最新的chrome。另一个问题是最新的chrome并不总是与chromedriver兼容。您可以使用firefox,我认为它更稳定。@slackingslacker谢谢您的回复。那么你是说这是由于最新的版本造成的吗?最终你的chrome会更新,chromedriver会因版本而异。看这个。对于firefox,浏览器版本的兼容性范围更广。有没有办法只传递浏览器的主要版本而不匹配完整版本?我不确定是否有。你可以查一下