在 Chrome 中运行 Selenium WebDriver Python 绑定

2024-10-10 09:28:00
admin
原创
79
摘要:问题描述:我在使用 Selenium 时遇到了一个问题。对于我的项目,我必须使用 Chrome。但是,在使用 Selenium 启动 Chrome 后,我无法连接到该浏览器。由于某种原因,Selenium 无法自行找到 Chrome。当我尝试在不包含路径的情况下启动 Chrome 时,会发生以下情况:Trac...

问题描述:

我在使用 Selenium 时遇到了一个问题。对于我的项目,我必须使用 Chrome。但是,在使用 Selenium 启动 Chrome 后,我无法连接到该浏览器。

由于某种原因,Selenium 无法自行找到 Chrome。当我尝试在不包含路径的情况下启动 Chrome 时,会发生以下情况:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome() # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 58, in start
    and read up at http://code.google.com/p/selenium/wiki/ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.                 Please download from http://code.google.com/p/selenium/downloads/list                and read up at http://code.google.com/p/selenium/wiki/ChromeDriver'

为了解决这个问题,我在启动 Chrome 的代码中包含了 Chromium 路径。但是,解释器无法找到要连接的套接字:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome('/usr/bin/chromium') # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 64, in start
    raise WebDriverException("Can not connect to the ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to the ChromeDriver'

我也尝试通过以下方式启动 Chrome 来解决问题:

chromium --remote-shell-port=9222

然而,这也没有用。

PS. 以下是有关我的系统的一些信息:

www-client: chromium 15.0.874.121
dev-lang:   python 2.7.2-r3 Selenium 2.11.1
OS:         GNU/Linux Gentoo Kernel 3.1.0-gentoo-r1

解决方案 1:

您需要确保独立的 ChromeDriver 二进制文件(与 Chrome 浏览器二进制文件不同)位于您的路径中或在 webdriver.chrome.driver 环境变量中可用。

有关如何连接的完整信息请参阅http://code.google.com/p/selenium/wiki/ChromeDriver

编辑:

是的,似乎是 Python 绑定中的一个错误,它从路径环境变量读取 chromedriver 二进制文件。似乎如果 chromedriver 不在您的路径中,您必须将其作为参数传递给构造函数。

import os
from selenium import webdriver

chromedriver = "/Users/adam/Downloads/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get("http://stackoverflow.com")
driver.quit()

解决方案 2:

对于 Linux

  1. 检查您是否安装了最新版本的 chrome 浏览器->chromium-browser -version

  2. 如果没有,请安装最新版本的 chromesudo apt-get install chromium-browser

  3. 从此处获取适当版本的 chrome 驱动程序

  4. 解压 chromedriver.zip

  5. 将文件移动到/usr/bin目录sudo mv chromedriver /usr/bin

  6. 转至/usr/bin目录cd /usr/bin

  7. 现在,您需要运行类似的命令sudo chmod a+x chromedriver来将其标记为可执行。

  8. 最后你就可以执行代码了。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.google.com")
print driver.page_source.encode('utf-8')
driver.quit()

解决方案 3:

仅限 Mac OS X

一种更简单的开始方式(假设你已经安装了Homebrew,如果没有,那么先安装它,然后让 Homebrew 让你的生活更美好)是运行以下命令:

brew install chromedriver

这应该会将 chromedriver 放入您的路径中,并且您应该一切就绪。

解决方案 4:

对于 Windows

从此直接链接 下载 ChromeDriver从此页面获取最新版本。

将文件粘贴chromedriver.exe到您的文件夹中C:Python27Scripts

现在应该可以工作了:

from selenium import webdriver
driver = webdriver.Chrome()

解决方案 5:

对于 Windows,请将 放置chromedriver.exe在 下<Install Dir>/Python27/Scripts/

解决方案 6:

在 Ubuntu 上,您只需执行以下操作:

sudo apt install chromium-chromedriver

它应该可以工作。

解决方案 7:

有两种方法可以在 Google Chrome 中运行 Selenium Python 测试。我正在考虑 Windows(在我的情况下是 Windows 10):

先决条件:从以下位置下载最新的 Chrome 驱动程序:下载 - ChromeDriver - WebDriver for Chrome

方法一:

i) 将下载的 ZIP 文件解压到您选择的目录/位置

ii) 在您的代码中设置可执行路径,如下所示:

self.driver = webdriver.Chrome(executable_path='D:Selenium_RiponAlWasimDriverschromedriver_win32chromedriver.exe')

方法二:

i) 只需将chromedriver.exe粘贴到<安装目录>/Python/Scripts/下(在我的情况下,该文件夹为:C:Python36Scripts)

ii) 现在编写如下简单代码:

self.driver = webdriver.Chrome()

解决方案 8:

对于 Windows 的 IDE:

如果您的路径不起作用,您可以尝试将其添加chromedriver.exe到您的项目中,就像在这个项目结构中一样。

chrome驱动程序

然后你应该在主文件中加载chromedriver.exe。至于我,我driver.exe在中加载了driver.py

def get_chrome_driver():
return webdriver.Chrome(&quot;..\content\engine\chromedriver.exe&quot;,
                            chrome_options=&#039;--no-startup-window&#039;)

..表示driver.py&#039;s上层目录

.`driver.py`表示所在目录

解决方案 9:

Selenium 4.6.0开始,您不需要手动安装Selenium Manager(webdriver-manager),如下所示,因为根据博客,它已经包含在 Selenium 中

pip install webdriver-manager

并且,自Selenium 4.11.0以来,下面的代码就足够了,因为Selenium Manager可以自动发现您机器上安装的浏览器版本,然后可以根据博客自动为其下载正确的驱动程序版本:

from selenium import webdriver

driver = webdriver.Chrome()

*我的回答解释了如何使用 Chrome、Selenium、pytest-django和Django测试 Django Admin 。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用