問題描述
所以我在一臺(tái)計(jì)算機(jī)上使用 selenium 制作了一個(gè)程序并且可以正常工作,現(xiàn)在在另一臺(tái)計(jì)算機(jī)上使用它時(shí)出現(xiàn)此錯(cuò)誤:
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:消息:無法連接到服務(wù) chromedriver
selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver
現(xiàn)在同樣的問題被提及:
Now this same issue was mention in:
Selenium python:不能連接到服務(wù) %s"% self.path
Selenium python:無法連接到服務(wù) %s"% self.path
Selenium 和 Python3 ChromeDriver 引發(fā)消息:無法連接到服務(wù) chromedriver
但是提到的解決方案不起作用.
however the solutions mentioned didnt work.
我正在使用 chrome 版本 79 并安裝了 chromedriver 79,我測(cè)試了在命令行中編寫 chromedriver,這意味著路徑配置正確,我確保 127.0.0.1 localhost 也在 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
下面是在我的電腦上運(yùn)行的代碼(所以我懷疑它是代碼的問題):
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
上一個(gè)問題我也試過這個(gè)修改:
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
這反而會(huì)給我這個(gè)幾乎相同的錯(cuò)誤消息:
which would instead give me this almost identical error message:
selenium.common.exceptions.WebDriverException:消息:無法連接到服務(wù) 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- 以管理員和正常方式運(yùn)行所有內(nèi)容
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- 將腳本和驅(qū)動(dòng)程序放在同一目錄中(使用正確的路徑)
5- Having both the script and the driver in the same directory (while using a correct path)
6- 擁有外部路徑并根據(jù)需要進(jìn)行設(shè)置
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- 運(yùn)行服務(wù)測(cè)試
我已確保在每次測(cè)試中一切都在正確的位置,我在每次新測(cè)試之前都進(jìn)行了重新啟動(dòng),他們總是給我同樣的錯(cuò)誤,如果我的路徑也不正確,也會(huì)發(fā)生這種情況,但是一旦我運(yùn)行了服務(wù)的代碼,它給了我一個(gè)不同的錯(cuò)誤,因?yàn)槲以?C:/中有我的 webdriver 需要管理員權(quán)限,但是使用正確的權(quán)限再次重新運(yùn)行測(cè)試會(huì)返回相同的錯(cuò)誤
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 驅(qū)動(dòng)程序獨(dú)有.即使遵循 Firefox 或邊緣驅(qū)動(dòng)程序的設(shè)置說明最終也會(huì)遇到相同的問題.這讓我懷疑連接正面臨一些問題.我已嘗試運(yùn)行 Mozilla 為設(shè)置提供的測(cè)試代碼,但沒有成功.
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.
推薦答案
這個(gè)錯(cuò)誤信息...
selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver
...暗示 ChromeDriver 無法啟動(dòng)/生成新的瀏覽上下文,即 Chrome 瀏覽器 會(huì)話.
...implies that the ChromeDriver was unable to initiate/spawn a new Browsing Context i.e. Chrome Browser session.
你需要注意幾件事:
確保您已從 ChromeDriver 二進(jìn)制文件的確切格式79.0.3945.36/" rel="nofollow noreferrer">下載位置 與您的底層操作系統(tǒng)有關(guān):
Ensure that you have downloaded the exact format of the ChromeDriver binary from the download location pertaining to your underlying OS among:
- chromedriver_linux64.zip:適用于 Linux 操作系統(tǒng)
- chromedriver_mac64.zip:適用于 Mac OSX
- chromedriver_win32.zip:適用于 Windows 操作系統(tǒng)
- 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 二進(jìn)制文件對(duì) 非 root 用戶具有可執(zhí)行權(quán)限.
Ensure that ChromeDriver binary have executable permission for the non-root user.
確保您已通過參數(shù) executable_path
傳遞了正確的 ChromeDriver 二進(jìn)制文件的絕對(duì)路徑,如下所示:
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 ochromedriver.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 ochromedriver.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
最后,為避免您使用的二進(jìn)制文件版本之間出現(xiàn)不兼容,請(qǐng)確保:
Finally, to avoid incompatibility between the version of the binaries you are using ensure that:
- Selenium 已升級(jí)到當(dāng)前級(jí)別版本 3.141.59.
- ChromeDriver 已更新為當(dāng)前 ChromeDriver v79.0.3945.36 級(jí)別.
- Chrome 已更新至當(dāng)前 Chrome 版本 79.0 級(jí)別.(根據(jù) ChromeDriver v79.0 發(fā)行說明)
- 清理你的項(xiàng)目工作區(qū)通過你的IDE和重建你的項(xiàng)目只需要依賴.
- 如果您的基本 Web 客戶端 版本太舊,請(qǐng)卸載它并安裝最新的 GA 和發(fā)布版本的 Web 客戶端.
- 進(jìn)行一次系統(tǒng)重啟.
- 以 非 root 用戶身份執(zhí)行您的
@Test
.
- 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 無法連接到服務(wù) %s" % self.path in linux server
- selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver.exe while opening chrome browser
- 如何配置 ChromeDriver 以通過 Selenium 以 Headless 模式啟動(dòng) Chrome 瀏覽器?
這篇關(guān)于selenium.common.exceptions.WebDriverException:消息:無法通過 Selenium Python 使用 ChromeDriver Chrome 連接到服務(wù)錯(cuò)誤的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!