selenium.common.exceptions.WebDriverException:消息:无法通过Selenium Python使用ChromeDriver Chrome连接到服务错误 [英] selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service error using ChromeDriver Chrome through Selenium Python

查看:378
本文介绍了selenium.common.exceptions.WebDriverException:消息:无法通过Selenium Python使用ChromeDriver Chrome连接到服务错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我已经在一台使用硒的计算机上编写了一个程序,并且该程序可以正常工作,现在在另一台计算机上使用它会出现此错误:

So I have made a program on one computer using selenium and that worked, Now using it in another computer I get this error:

selenium.common.exceptions.WebDriverException:消息:无法连接到服务chromedriver

selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver

现在在以下内容中提到了同一问题:

Now this same issue was mention in:

硒python:无法连接到服务%s"" %self.path

Selenium python:无法连接到服务%s" %self.path

Selenium和Python3 ChromeDriver引发消息:无法连接到服务chromedriver

但是所提到的解决方案不起作用.

however the solutions mentioned didnt work.

我正在使用chrome版本79,并安装了chromedriver 79,我测试了在命令行中编写chromedriver的工作,并且可以正常工作,这意味着路径已正确配置,我确保127.0.0.1本地主机也位于etc/hosts中

I am using chrome version 79 and have installed chromedriver 79, I tested writing chromedriver in command line and that works which means path is configured right, I have made sure 127.0.0.1 localhost is also in etc/hosts

下面是我的代码,该代码可以在我的计算机上使用(因此,我怀疑它是否与代码有关):

Below is my code which works on my computer (so i doubt its an issue with the code):

chrome_options = Options()   
chrome_options.add_argument("--headless")  
with webdriver.Chrome(chrome_options=chrome_options) as driver:
    driver.set_window_size(800, 460) # takes two arguments, width and height of the browser and it has to be called before using get()
    driver.execute_script("document.body.style.zoom='150%'")
    driver.get("file:\\"+url) # takes one argument, which is the url of the website you want to open
    driver.find_element_by_tag_name('body').screenshot(output)  # avoids scrollbar

在最后一个问题中,我也尝试了此修改:

In the last question I also tried this modification:

chrome_options = Options()   
chrome_options.add_argument("--headless")  
with webdriver.Chrome("C:\\chromedriver.exe",chrome_options=chrome_options) as driver:
    driver.set_window_size(800, 460) # takes two arguments, width and height of the browser and it has to be called before using get()
    driver.execute_script("document.body.style.zoom='150%'")
    driver.get("file:\\"+url) # takes one argument, which is the url of the website you want to open
    driver.find_element_by_tag_name('body').screenshot(output)  # avoids scrollbar

这反而会给我这个几乎相同的错误消息:

which would instead give me this almost identical error message:

selenium.common.exceptions.WebDriverException:消息:无法连接到服务C:\ chromedriver.exe

selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service C:\chromedriver.exe

我不确定问题可能在哪里.

I am unsure where the issue could lie.

我正在使用Windows.

I am using windows by the way.

我尝试过但不起作用的事情:

1-以管理员和普通用户身份运行所有内容

1- running everything as both admin and normal

2-重新安装Chrome

2- re-installing chrome

3-使用beta-chroma 80和webdriver 80

3- using the beta-chroma 80 and webdriver 80

4-使用普通的chrome 79和webdriver 79

4- using normal chrome 79 and webdriver 79

5-将脚本和驱动程序都放在同一目录中(使用 正确的路径)

5- Having both the script and the driver in the same directory (while using a correct path)

6-拥有外部路径并根据需要进行设置

6- Having an external path and have it setup as needed

7-在PATH文件夹中使用它.

7- Using it in the PATH folder.

8-在etc/hosts中添加"127.0.0.1 localhost"

8- Adding "127.0.0.1 localhost" to etc/hosts

9-正在运行服务测试

9- Running service test

我在每次测试中都确保一切都放在正确的位置,我在每次新测试之前都进行了重新启动,并且它们总是给我相同的错误,如果我的路径也不正确,也会发生同样的错误,但是一旦我运行了服务的代码,它给了我一个不同的错误,就像我在C:/中安装了Webdriver一样,它需要管理员权限,但是使用正确的权限再次重新运行测试会返回相同的错误

I have ensured in every test that everything was in it's correct placement, I have ran a reboot before every new test, and they always give me the same error, which also happens to occur if I had an incorrect path as well, but once I ran the code for a service and it gave me a different error as I had my webdriver in C:/ which required admin privilages, however re-running the test again with the correct privilages gave back the same error

更新问题不是chrome驱动程序独有.即使遵循针对Firefox或边缘驱动程序的安装说明,最终也会遇到相同的问题.这使我怀疑该连接遇到了一些问题.我尝试运行Mozilla提供的测试代码以进行设置,但无法正常工作.

Update the issue isn't exclusive to the chrome driver. Even following setup instructions for either the Firefox or edge drivers end up on the same issues. It makes me suspect that the connection is facing some issue. I have tried running the test codes provided by Mozilla for the setup and it didn't work.

不确定这是否有帮助或根本没有帮助.

Unsure if that does help much or at all.

推荐答案

此错误消息...

selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver

...表示 ChromeDriver 无法启动/产生新的浏览上下文,即 Chrome浏览器会话.

...implies that the ChromeDriver was unable to initiate/spawn a new Browsing Context i.e. Chrome Browser session.

您需要注意以下几点:

  • chromedriver_linux64.zip: For Linux OS
  • chromedriver_mac64.zip: For Mac OSX
  • chromedriver_win32.zip: For Windows OS

确保/etc/hosts文件包含以下条目:

Ensure that /etc/hosts file contains the following entry:

127.0.0.1 localhost 

  • 确保 ChromeDriver 二进制文件具有非root用户用户的可执行权限.

  • Ensure that ChromeDriver binary have executable permission for the non-root user.

    确保通过参数executable_path传递了 ChromeDriver 二进制文件的正确绝对路径,如下所示:

    Ensure that you have passed the proper absolute path of ChromeDriver binary through the argument executable_path as follows:

    with webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe', chrome_options=chrome_options) as driver:
    

  • 因此您的有效代码块将是:

  • So your effective code block will be:

    options = Options()   
    options.add_argument("--headless")
    options.add_argument('--no-sandbox') # Bypass OS security model
    options.add_argument('--disable-gpu')  # applicable to windows os only
    options.add_argument("--disable-dev-shm-usage")  # overcome limited resource problems
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    with webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe', options=options) as driver:
        driver.set_window_size(800, 460) # takes two arguments, width and height of the browser and it has to be called before 
        driver.execute_script("document.body.style.zoom='150%'")
        driver.get("file:\\"+url) # takes one argument, which is the url of the website you want to open
        driver.find_element_by_tag_name('body').screenshot(output)  # avoids scrollbar
    

  • 最后,为避免所使用的二进制版本之间出现不兼容性,请确保:

    Finally, to avoid incompatibility between the version of the binaries you are using ensure that:

    • Selenium is upgraded to current levels Version 3.141.59.
    • ChromeDriver is updated to current ChromeDriver v79.0.3945.36 level.
    • Chrome is updated to current Chrome Version 79.0 level. (as per ChromeDriver v79.0 release notes)
    • Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.
    • If your base Web Client version is too old, then uninstall it and install a recent GA and released version of Web Client.
    • Take a System Reboot.
    • Execute your @Test as non-root user.

    您可以在以下位置找到一些参考讨论:

    You can find a couple of reference discussions in:

    • Python Selenium "Can not connect to the Service %s" % self.path in linux server
    • selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver.exe while opening chrome browser
    • How to configure ChromeDriver to initiate Chrome browser in Headless mode through Selenium?

    这篇关于selenium.common.exceptions.WebDriverException:消息:无法通过Selenium Python使用ChromeDriver Chrome连接到服务错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    相关文章
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆