无法在Windows 10上使用Selenium chromedriver打开Web浏览器

时间:2019-01-30 17:17:04

标签: python selenium

我正在尝试通过ubuntu命令提示符在jupyter笔记本中使用python在Windows 10上使用Selenium Chromedriver打开Web浏览器。我已经阅读了堆栈溢出的帖子,并试图根据他们的回答进行解决,但是我陷入了一个循环,不断收到同样的3个错误。

这是我安装的:

  

操作系统-Windows 10、1709、64位Selenium-3.8.1 Chromedriver-2.45   Chrome-版本71.0.3578.98 Python-3.5.2

我尝试了各种网站。目标是最终进入社交媒体登录页面,但是我被困在打开新的空白Web浏览器中。

这是我的起始代码:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.imdb.com/")
  

WebDriverException:消息:“ chromedriver”可执行文件可能有误   权限。

然后我尝试了以下操作:

from selenium import webdriver
chromedriver = "C:/Users/xxxx/AppData/Local/lxss/home/xxxx/chromedriver.exe"
browser = webdriver.Chrome(chromedriver)
browser.get('https://www.imdb.com/')
  

WebDriverException:消息:“ chromedriver.exe”可执行文件必须是   在PATH中。

这是我已采取的步骤:

  1. 我将环境变量下的PATH添加到文件夹-(C:\ Users \ xxxxx \ AppData \ Local \ lxss \ home \ xxxx),
  2. 我尝试使用\,/,甚至\
  3. 添加PATH之后,我尝试了以下两个代码(以及各种版本),并收到了相同的错误:

A。

from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'C:\Users\xxxx\AppData\Local\lxss\home\xxxx)
driver.get("https://www.imdb.com/")

B。

from selenium import webdriver
chromedriver = r'C:\Users\xxxx\AppData\Local\lxss\home\xxxx\chromedriver.exe'
driver = webdriver.Chrome(chromedriver)
driver.get("https://www.imdb.com/")
  

WebDriverException:消息:   'C:\ Users \ xxxx \ AppData \ Local \ lxss \ home \ xxxx'可执行文件可能有误   权限。

然后,我执行了以下操作: -进入“常规”下的“文件属性”,删除了只读(Windows权限) -在安全性下进入文件属性,并将权限更改为完全控制 -在C:\ Users \ xxxxx \ AppData \ Local \ lxss \ home \ xxxx文件中,我更改了权限 在命令提示符下使用chmod 777 -R。然后,我尝试了以下代码:

from selenium import webdriver
import os
chromedriver = r'C:\Users\xxxx\AppData\Local\lxss\home\xxxx\chromedriver.exe'
driver = webdriver.Chrome(os.path.join(os.getcwd(), 'chromedriver.exe'))
driver.get("https://www.imdb.com/")
  

WebDriverException:消息:服务/home/ariggs/chromedriver.exe   意外退出。状态代码为:1

我陷入了这三个错误消息之间。有人对初学者有其他建议吗?

2 个答案:

答案 0 :(得分:1)

您实际上可以从Linux子系统启动Windows可执行文件,如此处https://docs.microsoft.com/en-us/windows/wsl/interop所述。

但是您必须牢记Selenium和ChromeDriver通过网络连接进行通信。实际上,chromedriver启动了自己的http服务器,Selenium通过http发送请求并接收响应。 (请参阅https://sqa.stackexchange.com/questions/28358/how-does-chromedriver-exe-work-on-a-core-and-fundamental-level

根据Microsoft,WSL和Windows共享相同的IP地址,并且支持通过本地主机的网络连接。但是在您的情况下,启动过程中似乎有问题。

您可以在Windows上使用Python启动远程Web驱动程序并连接到该驱动程序。

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import subprocess

subprocess.run(["d:\\develop\\remotewebdriver.cmd", ""])

driver = webdriver.Remote(
   command_executor='http://localhost:4444/wd/hub',
   desired_capabilities=DesiredCapabilities.CHROME)
driver.get('http://www.google.in/')

driver.close()

对于从Python调用的远程Webdriver,您需要Windows脚本remotewebdriver.cmd:

SET JAVA_HOME=D:\develop\Java\jdk-11.0.2
d:
cd \develop
start D:\develop\Java\jdk-11.0.2\bin\java -Dwebdriver.chrome.driver=d:\develop\chromedriver.exe -jar selenium-server-standalone-3.141.59.jar

您必须使路径适应您自己的环境。此设置对我有用。

答案 1 :(得分:0)

您可以这样做。

步骤1: 从此链接下载chrome驱动程序(下载特定版本的chrome): http://chromedriver.chromium.org/downloads

重要:首先检查您的Chrome版本。转到帮助->关于Google Chrome的信息,以查看Chrome的版本。

步骤2: 下载解压缩并将.parallax { background-image: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet); } 文件保存在特定文件夹后,例如chromedriver 转到环境变量并添加新路径C:\selenium

第3步 双击C:\selenium应用程序,然后重新启动命令提示符。 (如果您使用的是conda环境。)