所以我在一台使用硒的计算机上制作了一个程序,并成功了,现在在另一台计算机上使用它,我得到了这个错误:
selenium.com.mon.exceptions.WebDriverException:消息:无法连接到服务chromedriver
现在,中提到了同样的问题
Selenium python:无法连接到服务%s"%self-path
Selenium python:无法连接到服务%s"%self-path
Selenium和Python3 ChromeDriver引发消息:无法连接到服务ChromeDriver
然而,上述解决方案并不奏效。
我使用的是chrome版本79,并且已经安装了chromedriver 79,我测试了在命令行中编写chromeriver,这意味着路径配置正确,我已经确保127.0.0.1 localhost也在etc/hosts 中
以下是我在电脑上运行的代码(所以我怀疑这是代码的问题):
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
在最后一个问题中,我也尝试了这种修改:
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
相反,它会给我这个几乎相同的错误消息:
selenium.com.mon.exceptions.WebDriverException:消息:无法连接到服务C:\chromedriver.exe
我不确定问题出在哪里。
顺便说一下,我在用窗户。
编辑:我尝试过但没有成功的事情:
1-以管理员和正常的身份运行所有内容
2-重新安装铬
3-使用beta色度80和webdriver 80
4-使用普通chrome 79和webdriver 79
5-将脚本和驱动程序都放在同一目录中(同时使用正确路径)
6-具有外部路径并根据需要设置
7-在PATH文件夹中使用它。
8-将"127.0.0.1 localhost"添加到etc/hosts
9-运行服务测试
我在每次测试中都确保了一切都在正确的位置,我在每次新测试之前都会重新启动,他们总是给我同样的错误,如果我的路径不正确,也会发生这种情况,但一旦我运行了一个服务的代码,它就给了我一个不同的错误,因为我的网络驱动程序是C:/,需要管理员权限,然而,使用正确的权限再次重新运行测试会返回相同的错误
更新该问题并非chrome驱动程序独有。即使遵循Firefox或边缘驱动程序的设置说明,也会出现同样的问题。这让我怀疑这种联系正面临一些问题。我试着运行Mozilla为安装程序提供的测试代码,但没有成功。
不确定这是否有很大帮助。
此错误消息。。。
selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver
意味着ChromeDriver无法启动/生成新的浏览上下文,即Chrome浏览器会话。
您需要处理以下几件事:
确保您已从与您的底层操作系统相关的下载位置下载了ChromeDriver二进制文件的确切格式:
- chromedriver_linux64.zip:适用于Linux操作系统
- chromedriver_mac64.zip:适用于Mac OSX
- chromedriver_win32.zip:适用于Windows操作系统
确保
/etc/hosts
文件包含以下条目:127.0.0.1 localhost
确保ChromeDriver二进制文件具有非root用户的可执行权限。
确保您通过参数
executable_path
传递了ChromeDriver二进制文件的正确绝对路径,如下所示:with webdriver.Chrome(executable_path=r'C:pathtochromedriver.exe', chrome_options=chrome_options) as driver:
因此,您的有效代码块将是:
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:pathtochromedriver.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
强制性注意事项
最后,为了避免您使用的二进制文件版本之间的不兼容,请确保:
- 硒升级到当前版本3.141.59
- ChromeDriver更新为当前ChromeDriverv79.0.3945.36版本
- Chrome更新到当前Chrome 79.0版本。(根据ChromeDriver v79.0发布说明)
- 通过IDE清理您的项目工作区,并仅使用所需的依赖项重建项目
- 如果您的基本Web客户端版本太旧,请将其卸载并安装最新的GA和发布的Web客户端版本
- 进行系统重新启动
- 以非root用户身份执行您的
@Test
参考
你可以在中找到一些参考讨论
- Python Selenium"无法连接到服务%s"在linux服务器中的%self.path
- selenium.com.mon.exceptions.WebDriverException:消息:打开chrome浏览器时无法连接到服务chromedriver.exe
- 如何配置ChromeDriver通过Selenium在无头模式下启动Chrome浏览器