Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Chromebook上运行Selenium需要哪些版本的Chromium、Selenium和Chromedriver?_Python_Selenium_Selenium Chromedriver_Chromium_Chromebook - Fatal编程技术网

Python 在Chromebook上运行Selenium需要哪些版本的Chromium、Selenium和Chromedriver?

Python 在Chromebook上运行Selenium需要哪些版本的Chromium、Selenium和Chromedriver?,python,selenium,selenium-chromedriver,chromium,chromebook,Python,Selenium,Selenium Chromedriver,Chromium,Chromebook,我想在Chromebook上使用Chromedriver运行Selenium测试,但我无法让它工作 设置 我已经安装好了。chromebrew有针对virtualenv和Python3.6的软件包,另外还有pip安装SeleniumI获得了Selenium。从中我知道chromedriver位于/usr/local/chromedriver中。称之为: chronos@localhost /usr/local/chromedriver $ chromedriver Starting Chrom

我想在Chromebook上使用Chromedriver运行Selenium测试,但我无法让它工作

设置
我已经安装好了。chromebrew有针对virtualenv和Python3.6的软件包,另外还有
pip安装Selenium
I获得了Selenium。从中我知道chromedriver位于
/usr/local/chromedriver
中。称之为:

chronos@localhost /usr/local/chromedriver $ chromedriver 
Starting ChromeDriver 2.24 on port 9515
Only local connections are allowed.
给我版本,我只想测试
localhost
,所以我很好,有:

Versions:  
ChromiumOS 55.0.2883.100 (64-bit)  
Python 3.6  
Selenium bindings for Python 3.13.0  
Chromedriver 2.24  
我(想我)知道Chromedriver的行为就像端口9515上的服务器一样,等待来自
test.py
的调用。我胡乱摆弄,直到不再因为缺少chromedriver/权限/等而出现错误

测试文件
我的测试文件仅包含:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.binary_location = '/etc/chromium.exe'

driver = webdriver.Chrome('/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
driver.get("http://localhost:8000")
如果我调用
python3 test.py
get(“http://localhost:8000“
什么也没发生,在我调用python3时,我最终得到了:

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    driver = webdriver.Chrome('/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 75, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 156, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 251, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 320, in execute
    self.error_handler.check_response(response)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
  (Driver info: chromedriver=2.24,platform=Linux 3.14.0 x86_64)
你会看到我在功能中用定制的Chrome替换了Chrome。这是用自定义的Chrome二进制文件替换默认Chrome二进制文件的方法

我从中了解到,问题可能是组件的版本彼此之间的关系不好,但它指向的并没有真正告诉我从哪里开始寻找要尝试的版本

我想我已经涵盖了除不兼容版本之外的所有情况,所以问题是,谁能告诉我哪个版本的什么可以让它运行?

此错误消息

selenium.common.exceptions.WebDriverException: Message: chrome not reachable
…意味着ChromeDriver无法启动/生成新的网络浏览器,即Chrome浏览器会话

除此错误外,还有以下多种可能性:

chrome_options.binary_location = '/etc/chromium'
driver = webdriver.Chrome(executable_path='/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
  • 当您在Linux操作系统上提到chromium二进制文件的绝对路径时,您需要剥离扩展名,即
    .exe
    ,如下所示:

    chrome_options.binary_location = '/etc/chromium'
    
    driver = webdriver.Chrome(executable_path='/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
    
  • 初始化Chrome浏览会话时,需要传递参数Chrome\u选项可执行路径,如下所示:

    chrome_options.binary_location = '/etc/chromium'
    
    driver = webdriver.Chrome(executable_path='/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
    
  • 就像常规的Chrome浏览器GA版本一样,Chrome团队确实发布了ChromeDriver二进制文件,添加/修改了功能以及相应的支持Chrome浏览器版本。您需要确保正在使用的
    chrome
    chromedriver
    二进制文件在以下步骤中同步

您可以在中找到有关版本控制的相关讨论

但是,您的主要问题是所使用的二进制文件版本之间的不兼容,如下所示:

chrome_options.binary_location = '/etc/chromium'
driver = webdriver.Chrome(executable_path='/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
  • 您使用的是chromedriver=2.24
  • 的发行说明明确提到以下内容:
支持Chrome v52-54

  • 您使用的是chrome=55.0
  • 的发行说明明确提到以下内容:
支持Chrome v54-56

因此,ChromeDriver v2.24和Chrome浏览器v55.0之间存在明显的不匹配

解决方案
  • 将ChromeDriver升级到当前级别
  • 将Chrome版本保持在Chrome v66-68级别之间。()
  • 通过IDE清理项目工作区,并仅使用所需的依赖项重建项目
  • (仅限LinuxOS)在执行测试套件之前和之后
  • 如果您的基本Web客户端版本太旧,请通过卸载它并安装最新的GA和Web客户端发布版本
  • 重新启动系统
  • 执行
    @测试

我们开始了:啊,哇,谢谢,如果我能解决这个问题,我会查看列表并报告回来。我还没有解决这个问题-请看我的Chrome(v62 is)和chromedriver升级到兼容版本,这让我与丢失的库走上了正轨。让我们看看我能不能让它工作。我会把这个标记为正确的,谢谢你的帮助