【记录】Python3|Selenium4 极速上手入门(Windows)

环境:Windows

版本:python3,selenium 4.11.2

写这个是方便自己重装电脑时重新装 Selenium,懒得每次都重新找链接。

文章目录

  • [1 装](#1 装)
  • [2 运行报错](#2 运行报错)
    • [RequestsDependencyWarning: urllib3 (1.26.9) or chardet (3.0.4) doesn't match a supported version](#RequestsDependencyWarning: urllib3 (1.26.9) or chardet (3.0.4) doesn‘t match a supported version)
    • [打开了浏览器,但是没有显示网页 / Service连接失败](#打开了浏览器,但是没有显示网页 / Service连接失败)
    • [invalid argument: invalid locator (Session info: MicrosoftEdge=102.0.1245.44)](#invalid argument: invalid locator (Session info: MicrosoftEdge=102.0.1245.44))
  • [3 老代码报错](#3 老代码报错)
    • [DeprecationWarning: executable_path has been deprecated, please pass in a Service object](#DeprecationWarning: executable_path has been deprecated, please pass in a Service object)
    • [AttributeError: 'WebDriver' object has no attribute 'find_elements_by_xpath'](#AttributeError: 'WebDriver' object has no attribute 'find_elements_by_xpath')
  • [4 经典代码片段分享](#4 经典代码片段分享)

1 装

Chrome 和 Edge 或其他浏览器任选其一。

Chrome

首先,终端运行:

bash 复制代码
pip3 install selenium==4.11.2

官网下载Chrome:https://www.google.cn/intl/zh-CN/chrome/

安装好Chrome之后查看Chrome版本:chrome://settings/help

如果Chrome版本大于114,官网下载与Chrome版本对于的ChromeDriver:https://googlechromelabs.github.io/chrome-for-testing/往下翻翻就能看到下载链接

如果Chrome版本小于等于114,官网下载ChromeDriver链接:https://chromedriver.chromium.org/downloads

解压下好的ChromeDriver.zip,把里面的exe拖出来,并记住放到了哪个路径。

写代码引入driver:

python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

s = Service("D:/software/chromedriver.exe")
driver = webdriver.Chrome(service=s)

结合Options使用的方式:

python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument(
    "user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'")  # UA
s = Service("D:/software/chromedriver.exe")
driver = webdriver.Chrome(service=s, options=options)

Edge

首先,终端运行:

bash 复制代码
pip3 install selenium==4.11.2

官网下载Edge:https://www.microsoft.com/en-us/edge/download

安装好Edge之后查看Chrome版本:edge://settings/help

官网下载与Edge版本对于的webDriver:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

解压下好的edgeDriver.zip,把里面的exe拖出来,并记住放到了哪个路径。

python 复制代码
from selenium import webdriver
from selenium.webdriver.edge.service import Service

s = Service('D:/software/msedgedriver.exe')
edge = webdriver.Edge(service=s)

结合Options使用的方式:

python 复制代码
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options

options = Options()
options.add_argument(
    "user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'")  # UA
s = Service('D:/software/msedgedriver.exe')
edge = webdriver.Edge(service=s, options=options)

其他浏览器

浏览器本身直接搜索下载,驱动driver可参考selenium官网的驱动下载列表:
https://www.selenium.dev/zh-cn/documentation/webdriver/troubleshooting/errors/driver_location/#download-the-driver

2 运行报错

以下是运行Selenium可能遇到的问题:

RequestsDependencyWarning: urllib3 (1.26.9) or chardet (3.0.4) doesn't match a supported version

解决:更新requests:pip3 install --upgrade requests

打开了浏览器,但是没有显示网页 / Service连接失败

原因:浏览器驱动版本下载错误。

解决:请自行确定浏览器版本并重新下载驱动driver。

invalid argument: invalid locator (Session info: MicrosoftEdge=102.0.1245.44)

两种原因:

① 浏览器版本和驱动版本不一致(请自行确定浏览器版本并重新下载驱动driver);

代码打错了 。比如edge.find_elements(by="//div"),正确的是edge.find_elements(by='xpath',value="//div")

3 老代码报错

Selenium 4重构过,API 发生了一些变化。以下是常见报错:

DeprecationWarning: executable_path has been deprecated, please pass in a Service object

原因:查询当前版本重构后的函数,是之前的 executable_path 被重构到了 Service 函数里。所以,新版的selenium不能继续用executable_path,而是应该写成Service

DeprecationWarning 警告的类型错误的意思都是,该类型的警告大多属于版本已经更新,所使用的方法过时。

解决:webdriver.Edge(executable_path='/pathto/webdriver.exe', options=options) 改成 webdriver.Edge(service=Service('/pathto/webdriver.exe'), options=options),意思是去掉代码中的executable_path,用Service,如本文的第一节里提供的示例代码那样写。

参考:selenium 报错 DeprecationWarning: executable_path has been deprecated, please pass in a Service object

AttributeError: 'WebDriver' object has no attribute 'find_elements_by_xpath'

原因:新的driver类没有find_elements_by_xpath方法了:

解决:改成find_elements(by='xpath', value='查找路径')

快速替换:find_elements_by_xpath(find_elements(by='xpath',value=

4 经典代码片段分享

python 复制代码
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options

def connectchrome():
    """
    连接chrome浏览器,实现无痕浏览
    """
    # driver_path = os.getcwd()+ "/chromedriver.exe"
    # s = Service(driver_path)
    s = Service("D:/software/chromedriver.exe") # 注意改成自己的driver路径
    
    options = Options()
    options.add_argument('log-level=3')
    options.add_argument("--incognito")
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_experimental_option('useAutomationExtension', False)
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    prefs = {
        'profile.default_content_setting_values': {
            'images': 2,
        }
    }
    options.add_experimental_option('prefs', prefs)
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_argument(
        "user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'")
    driver = webdriver.Chrome(service=s, options=options)
    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": """
        Object.defineProperty(navigator, 'webdriver', {
          get: () => undefined
        })
      """
    })
    driver.set_window_size(1280, 800)
    driver.set_window_position(100, 100)
    time.sleep(2)
    return driver
相关推荐
万千思绪13 分钟前
【PyCharm 2025.1.2配置debug】
ide·python·pycharm
微风粼粼2 小时前
程序员在线接单
java·jvm·后端·python·eclipse·tomcat·dubbo
云天徽上2 小时前
【PaddleOCR】OCR表格识别数据集介绍,包含PubTabNet、好未来表格识别、WTW中文场景表格等数据,持续更新中......
python·ocr·文字识别·表格识别·paddleocr·pp-ocrv5
你怎么知道我是队长2 小时前
python-input内置函数
开发语言·python
叹一曲当时只道是寻常3 小时前
Python实现优雅的目录结构打印工具
python
hbwhmama3 小时前
python高级变量XIII
python
费弗里4 小时前
Python全栈应用开发利器Dash 3.x新版本介绍(3)
python·dash
dme.4 小时前
Javascript之DOM操作
开发语言·javascript·爬虫·python·ecmascript
加油吧zkf4 小时前
AI大模型如何重塑软件开发流程?——结合目标检测的深度实践与代码示例
开发语言·图像处理·人工智能·python·yolo
t_hj4 小时前
python规划
python