【记录】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
相关推荐
旧时光巷14 分钟前
【Flask 基础 ①】 | 路由、参数与模板渲染
后端·python·零基础·flask·web·模板渲染·路由系统
java1234_小锋23 分钟前
【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博评论IP地图可视化分析实现
python·自然语言处理·flask
golitter.37 分钟前
python的异步、并发开发
开发语言·python
努力的小Qin37 分钟前
oneapi本地部署接口测试(curl命令方式+postman方式)
测试工具·postman·oneapi
陈敬雷-充电了么-CEO兼CTO1 小时前
强化学习三巨头PK:PPO、GRPO、DPO谁是大模型训练的「王炸」?
人工智能·python·机器学习·chatgpt·aigc·ppo·grpo
专注VB编程开发20年2 小时前
Selenium的进化历程与WebDriver的创新整合,作者Simon Stewart
爬虫·selenium·数据采集·webdriver·simon stewart
SiYuanFeng2 小时前
【问题未解决-寻求帮助】VS Code 中使用 Conda 环境,运行 Python 后 PowerShell 终端输出内容立即消失
开发语言·python·conda
程序视点2 小时前
Wise Duplicate Finder 重复文件查找工具 - 永久免费专业版文件去重工具
前端·windows
段ヤシ.2 小时前
Windows环境下安装Python和PyCharm
开发语言·python·pycharm
测试19983 小时前
Newman+Jenkins实施接口自动化测试
自动化测试·软件测试·python·测试工具·职场和发展·jenkins·测试用例