在 Chrome 中运行 Selenium WebDriver Python 绑定

2024-10-10 09:28:00
admin
原创
102
摘要:问题描述:我在使用 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 。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   681  
  在项目管理领域,集成产品开发(IPD)流程以其高效、协同的特点,被众多企业视为提升产品竞争力的关键。IPD流程强调跨部门、跨职能的紧密合作,以确保产品从概念到市场各个环节的无缝衔接。然而,实现这一目标并非易事,它需要企业深刻理解并掌握IPD流程中的跨部门协作艺术。本文将深入探讨IPD流程中跨部门协作的三个关键点,旨在为...
IPD项目管理咨询   9  
  掌握IPD流程图:提升团队协作的关键路径在当今快速变化的商业环境中,团队协作的效率与效果直接关系到项目的成功与否。集成产品开发(Integrated Product Development,简称IPD)作为一种先进的研发管理理念,通过跨部门、跨领域的协同工作,能够显著提升产品开发的速度与质量。而IPD流程图,则是这一理...
IPD流程阶段   9  
  IPD流程概述:理解其核心价值与实施背景集成产品开发(Integrated Product Development,简称IPD)是一种先进的产品开发管理理念,它强调跨部门协作、市场导向和快速响应变化的能力。IPD流程不仅关注产品本身的技术创新,更注重将市场、研发、生产、销售等各个环节紧密集成,以实现产品从概念到市场的高...
华为IPD是什么   7  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程以其跨部门协作、高效决策和快速响应市场变化的特点,被众多企业视为提升竞争力的关键。然而,实践IPD流程并非易事,项目管理中的种种错误往往阻碍了其效果的充分发挥。本文旨在深入探讨如何在实施IPD流程时避免这些常见错误,...
IPD框架   7  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用