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

环境:Windows
版本:python3,selenium 4.11.2
写这个是方便自己重装电脑时重新装 Selenium,懒得每次都重新找链接。

文章目录

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

1 装

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

Chrome

首先,终端运行:

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:

from selenium import webdriver
from selenium.webdriver.chrome.service import Services = Service("D:/software/chromedriver.exe")
driver = webdriver.Chrome(service=s)

结合Options使用的方式:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Optionsoptions = 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

首先,终端运行:

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拖出来,并记住放到了哪个路径。

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

结合Options使用的方式:

from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Optionsoptions = 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 经典代码片段分享

from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Optionsdef 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/47845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几种常见的递归算法

阶乘 这个比较简单就不说了。 int factorial(int n) {if (n < 0){return 0;}else if (n 1){return 1;}else {return n * factorial(n - 1);} }fibonacci 如此简单的算法&#xff0c;复试的时候竟然写错了&#xff01;&#x1f633;囧&#xff01; int fibonacci(unsigne…

搭建开发环境-操作系统篇(一键搭建开发环境)

概述 所谓工欲善其事必先利其器&#xff0c;搭环境往往是开发过程中卡出很多初学者的拦路虎。 对于很多老鸟来说&#xff0c;很多东西都已经习惯成自然&#xff0c;也就没有刻意和初学者说。但对于很多初学者&#xff0c;却是受益良多。 这个系列&#xff0c;先从操作系统开始…

Docker容器与虚拟化技术:容器运行时说明与比较

目录 一、理论 1.容器运行时 2.容器运行时接口 3.容器运行时层级 4.容器运行时比较 5.强隔离容器 二、问题 1.K8S为何难以实现真正的多租户 三、总结 一、理论 1.容器运行时 &#xff08;1&#xff09;概念 Container Runtime 是运行于 k8s 集群每个节点中&#xff…

【前端vue升级】vue2+js+elementUI升级为vue3+ts+elementUI plus

一、工具的选择 近期想将vuejselementUI的项目升级为vue3tselementUI plus&#xff0c;以获得更好的开发体验&#xff0c;并且vue3也显著提高了性能&#xff0c;所以在此记录一下升级的过程对于一个正在使用的项目手工替换肯定不是个可实现的解决方案&#xff0c;更优方案是基于…

阿里云服务器-修改ecs操作系统,把window系统更换成Linux操作系统

其他sql格式也在更新中&#xff0c;可直接查看这个系列&#xff0c;要是没有你需要的格式&#xff0c;可在评论或私信我 总目录 目录-后期更新打算 hive的nvl中的子查询 总目录我这个是window&#xff0c;默认应该都是window&#xff0c;我需要改成Linux系统第一步&#xff…

RISC-V公测平台发布· CoreMark测试报告

一. CoreMark简介 CoreMark是一款用于评估CPU性能的基准测试程序&#xff0c;它包含了多种不同的计算任务&#xff0c;包括浮点数、整数、缓存、内存等方面的测试。CoreMark的测试结果通常被用来作为CPU性能的参考&#xff0c;它可以帮助开发人员和系统管理员评估不同处理器和…

ClickHouse(二十三):Java Spark读写ClickHouse API

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术&#xff0c;IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…

部署问题集合(十九)linux设置Tomcat、Docker,以及使用脚本开机自启(亲测)

前言 因为不想每次启动虚拟机都要手动启动一遍这些东西&#xff0c;所以想要设置成开机自启的状态 设置Tomcat开机自启 创建service文件 vi /etc/systemd/system/tomcat.service添加如下内容&#xff0c;注意修改启动脚本和关闭脚本的地址 [Unit] DescriptionTomcat9068 A…

C语言编写图形界面

文章目录 环境使用库基础概念句柄 程序的入口创建窗口定义窗口类注册窗口类创建窗口 完整代码运行效果 环境 使用的是VSCode MinGW&#xff1b; 使用库 我们使用windows.h库来实现图形化界面。 头文件如下&#xff1a; #include <windows.h>windows.h是 Windows 操作…

春秋云镜 CVE-2019-2725

春秋云镜 CVE-2019-2725 Weblogic < 10.3.6 ‘wls-wsat’ XMLDecoder 反序列化漏洞 靶标介绍 Oracle Fusion Middleware&#xff08;子组件&#xff1a;Web Services&#xff09;的 Oracle WebLogic Server 组件中的漏洞。受影响的受支持版本为 10.3.6.0.0 和 12.1.3.0.0。…

油画欣赏|《纯洁的梦乡》,心中的宇宙

《纯洁的梦乡》 80x60cm 陈可之2021年绘 油画《纯洁的梦乡》&#xff0c;以绮丽的想象&#xff0c;精湛的技艺&#xff0c;描绘出梦境中的蜻蜓、山、水、星空等事物&#xff0c;展现出一个纯洁美好的心灵宇宙世界。 油画采用水平构图的方式&#xff0c;在位置偏低的山脚设置水…

分析Flink,源和算子并行度不一致时,运行一段时间后,看似不再继续消费的问题,提供解决思路。

文章目录 背景分析 问题来了比较一开始的情况解决方式 背景 之前有分析过一次类似问题&#xff0c;最终结论是在keyby之后&#xff0c;其中有一个key数量特别庞大&#xff0c;导致对应的subtask压力过大&#xff0c;进而使得整个job不再继续运作。在这个问题解决之后&#xff…

UG\NX二次开发 创建中心线

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,C\C++,Qt-CSDN博客 简介: 下面是在制图模块创建中心线的例子,用的是ufun函数。 效果: 代码: #include "me.hpp"#include <stdio.h> #include <string.h> #include <uf.h>…

postgresql 谨慎使用正则删除(%,_)

建表 CREATE TABLE public.ellistest (id bigserial NOT NULL,"name" varchar null,primary key (id) );插入数据 删除含有_线的数据 你会发现表被清空了 delete from ellistest where name like %_%原因 百分号(%)用于表示0、1或多个字符或数字。 下划线通配符…

【【萌新的STM32学习-12】】

萌新的STM32学习-12 GPIO八种模式 1输入浮空 输入用&#xff0c;完全浮空&#xff0c;状态不定 2输入上拉 输入用&#xff0c;用内部上拉&#xff0c;默认是高电平 3输入下拉 输入用&#xff0c;用内部下拉&#xff0c;默认是低电平 4模拟功能 ADC DAC 5开漏输出 软件IIC的…

2023年上半年,吉利汽车销量增长13.1%,同比增长38%

根据吉利汽车发布的中期业绩报告&#xff0c;2023年上半年&#xff0c;吉利汽车取得了令人瞩目的销售和收入增长。该公司在中国乘用车市场表现出色&#xff0c;销量增长了13.1%&#xff0c;达到了69.4万辆&#xff0c;超过了整体市场增长率&#xff08;8.8%&#xff09;。 这主…

学习笔记|按键原理|消抖|按键点灯的4种模式|STC32G单片机视频开发教程(冲哥)|第七集:按键点灯

文章目录 第六集&#xff08;下&#xff09;课后练习解答&#xff1a;SOS求救灯光编写求救信号原理冲哥代码及解析分模块设计&#xff1a;math.h&#xff1a;math.c:while主程序部分 按键点灯&#xff08;下&#xff09;1.按键的原理Tips&#xff1a;按键消抖 2.按键的代码实现…

python 基础篇 day 1 初识变量和数据类型

文章目录 变量变量作用——用于存储和表示数据。变量命名规则命名法大驼峰小驼峰下划体n j i a x 通常作为临时变量使用 建议 变量种类全局变量&#xff08;Global Variables&#xff09;局部变量&#xff08;Local Variables&#xff09;静态变量&#xff08;Static Variables…

万宾科技22款产品入选《城市生命线安全工程监测技术产品名录》

2023年8月17日-18日&#xff0c;由北京市地下管线协会主办的2023首届城市生命线安全与发展大会在北京召开&#xff0c;本次大会汇聚中央及地方政府主管领导、院士专家、行业领袖、龙头代表、产业精英等。 大会聚焦安全监管智慧平台和燃气爆炸、城市内涝、地下管线交互风险、第三…

解决Spring mvc + JDK17@Resource无法使用的情况

问题描述 我在使用jdk17进行Spring mvc开发时发现 Resource用不了了。 原因 因为JDK版本升级的改动&#xff0c;在Jdk9~17环境下&#xff0c;搭建Springboot项目&#xff0c;会出现原有Resource&#xff08;javax.annotation.Resource&#xff09;不存在的问题&#xff0c;导…