Python+Selenium教程

1 篇文章 0 订阅
订阅专栏


Selenium是一个用电脑模拟人操作浏览器网页,可以实现自动化。以下是详细教程。

准备工作

1.安装selenium

pip install selenium

或者直接在pycharm中打开项目,点击file—>settings—>Project---->Python Interpreter点击“+”号,在弹出的框框里面输入selenium进行搜索下载安装。参考见下图:
在这里插入图片描述

2.下载浏览器驱动

Firefox浏览器驱动:geckodriver
Chrome浏览器驱动:chromedriver ,CNPM Binaries Mirror (npmmirror.com), taobao备用地址
IE浏览器驱动:IEDriverServer
Edge浏览器驱动:MicrosoftWebDriver
Opera浏览器驱动:operadriver
PhantomJS浏览器驱动:phantomjs
我使用的是谷歌浏览器,因此我下载的是ChromeDriver,需要将下载的压缩包放到pyhton项目下的\venv\Scripts目录下,例如我的放置路径为:F:\hf\pythonProject2\venv\Scripts
注意
随着浏览器的更新,对应的webdriver也应该随着一起更新,否则无法正常使用。更新webdriver就是再从官网上下载对应你浏览器版本的webdriver,再次解压,按照上述操作再进行一次就OK啦。

3.测试执行

执行下述代码可测试执行:

from selenium import webdriver


driver = webdriver.Firefox()   # Firefox浏览器
# driver = webdriver.Firefox("驱动路径")

driver = webdriver.Chrome()    # Chrome浏览器

driver = webdriver.Ie()        # Internet Explorer浏览器

driver = webdriver.Edge()      # Edge浏览器

driver = webdriver.Opera()     # Opera浏览器

driver = webdriver.PhantomJS()   # PhantomJS

# 打开网页
driver.get(url) # 打开url网页 比如 driver.get("http://www.baidu.com")

在这里插入图片描述
出现上图,运行代码使有网页弹出,证明配置成功。如果出现弹出的网页一闪而过的现象,先不要慌,这可能是你的elenium版本过高的原因,不妨试试下载一个较低的selenium版本,再次进行测试。本人用的是4.1.1版本的,不会出现闪退现象。

元素定位

#提前导包
from selenium.webdriver.common.by import By
find_element_by_id()
# 新的写法
find_element(by=By.ID,value="")
find_element_by_name()
# 新的写法
find_element(by=By.NAME,value="")
find_element_by_class_name()
# 新的写法
find_element(by=By.CLASS_NAME,value="")
find_element_by_tag_name()
# 新的写法
find_element(by=By.TAG_NAME,value="")
find_element_by_link_text()
# 新的写法
find_element(by=By.LINK_TEXT,value="")
find_element_by_partial_link_text()
# 新的写法
find_element(by=By.PARTIAL_LINK_TEXT,value="")
find_element_by_xpath()
# 新的写法
find_element(by=By.XPATH,value="")
find_element_by_css_selector()
# 新的写法
find_element(by=By.CSS_SELECTOR,value="")

element变成elements就是找所有满足的条件,返回数组。

想要使用Xpath直接在浏览器中复制即可,详细见下图:
在这里插入图片描述

控制浏览器操作

控制浏览器窗口大小

driver.set_window_size(480, 800)

浏览器后退前进

# 后退 
driver.back()

# 前进 
driver.forward()

浏览器刷新

driver.refresh() # 刷新

Webelement常用方法

点击和输入

driver.find_element_by_id("kw").clear() 
# 清楚文
driver.find_element_by_id("kw").send_keys("selenium")
 # 模拟按键输入 
 driver.find_element_by_id("su").click() 
 # 单机元素

提交

可以在搜索框模拟回车操作

search_text = driver.find_element_by_id('kw') search_text.send_keys('selenium') search_text.submit()

其他

size: 返回元素的尺寸。

text: 获取元素的文本。

get_attribute(name): 获得属性值。

is_displayed(): 设置该元素是否用户可见。

鼠标操作

在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。

ActionChains 类提供了鼠标操作的常用方法:

perform(): 执行所有 ActionChains 中存储的行为;
context_click(): 右击;
double_click(): 双击;
drag_and_drop(): 拖动;
move_to_element(): 鼠标悬停。
例如:

from selenium import webdriver
# 引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.baidu.cn")

# 定位到要悬停的元素
above = driver.find_element_by_link_text("设置")
# 对定位到的元素执行鼠标悬停操作
ActionChains(driver).move_to_element(above).perform()

键盘操作

以下为常用的键盘操作:

send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
send_keys(Keys.F1) 键盘 F1
……
send_keys(Keys.F12) 键盘 F12

# 输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")
from selenium.webdriver.common.keys import Keys
# 删除多输入的一个 m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

获取断言信息

title = driver.title # 打印当前页面title
now_url = driver.current_url # 打印当前页面URL
user = driver.find_element_by_class_name('nums').text # # 获取结果数目

等待页面加载完成

显示等待

显式等待使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

element = WebDriverWait(driver, 5, 0.5).until(
                      EC.presence_of_element_located((By.ID, "kw"))
                      )
element.send_keys('selenium')
driver.quit()

WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。具体格式如下:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

driver :浏览器驱动。
timeout :最长超时时间,默认以秒为单位。
poll_frequency :检测的间隔(步长)时间,默认为0.5S。
ignored_exceptions :超时后的异常信息,默认情况下抛NoSuchElementException异常。
WebDriverWait()一般由until()或until_not()方法配合使用,下面是until()和until_not()方法的说明。
until(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为True。
until_not(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为False。
在本例中,通过as关键字将expected_conditions 重命名为EC,并调用presence_of_element_located()方法判断元素是否存在。

隐式等待

如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素。 默认等待时间是0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期。

from selenium import webdriver
driver = webdriver.Firefox()    
driver.implicitly_wait(10) # seconds    
driver.get("http://somedomain/url_that_delays_loading")    
myDynamicElement = driver.find_element_by_id("myDynamicElement") 
Selenium元素定位的30种方式(史上最全)
09-16
主要介绍了Selenium元素定位的30种方式,中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
最全Python+Selenium环境搭建教程-你绝对想不到有这么简单!
m0_73409141的博客
06-01 5653
在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!共计16条视频,包括:1. 【web自动化】主流Web自动化测试技术对比、2. 【web自动化】Selenium自动化测试环境一键搭建、3. 【web自动化】Selenium八大定位策略详解等,UP主更多精彩视频,请关注UP账号。Selenium是目前最流行的web自动化测试工具,也常用于网络爬虫,已经更新到3以上的版本。
Python+Selenium安装及环境配置手把手教会你
最新发布
与君初相识,犹如故人归
11-22 5056
1. 1,组件✨Selenium IDE,Firefox浏览器的一个插件,提供简单的脚本录制、编辑与回放功能;Selenium Remote Control (RC),是selenium 1 提供的组件,包含:SeleniumServer(用于提供自动化测试服务)、Selenium Client(用于执行脚本);Selenium Grid,用于对测试用例集做分布式处理(并行),现已集成到selenium server中;
Python+selenium自动化测试实战项目(全面,完整,详细)
crhnb的博客
06-09 5556
项目名称:**公司电子零售会员系统项目目的:实现电子零售会员系统项目自动化测试执行项目版本:v1.0。
python+selenium
m0_58017344的博客
06-17 719
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QC9EZbM2-1686992729330)(image-20230529124711144.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rs5Sd32C-1686992729330)(image-20230529124747587.png)]在右上角编辑配置里,添加新配置(python文件不用编写内容),使用当前配置,点击三角型按钮,运行当前文件。不要用鼠标或者快捷键与运行。
python+selenium+unittest环境搭建1
08-08
python+selenium+unittest环境搭建1
python+selenium+chrome批量文件下载并自动创建文件夹实例
09-16
主要介绍了python+selenium+chrome批量文件下载并自动创建文件夹实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
python+selenium环境搭建和教程
08-09
python+selenium安装教程及相关资源
python+selenium自动化简易教程
06-21
python+selenium自动化入门教程ppt版本,里面写了简易python+selenium自动化的安装教程和实现方法
python+selenium自动化框架搭建的方法步骤
01-20
selenium/xlrd只需要再python环境下使用pip install 名称即可进行对应的安装。 安装完成后可使用pip list查看自己的安装列表信息。 chromedriver:版本需和自己的chrome浏览器对应,百度下载。 作用:对chrome浏览器...
基于Selenium+Python的web自动化测试框架详解
manbskjabgkb的博客
06-25 1825
Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并把录制的操作以多种语言(例如java、python等)的形式导出成测试用例。Selenium WebDriver:提供Web自动化所需的API,主要用作浏览器控制、页面元素选择和调试。
python+selenium环境搭建(一)
m0_70618214的博客
06-29 1323
python+selenium自动化测试环境包括四个部分:pythonseleniumchrome谷歌浏览器、chrome谷歌浏览器驱动。其中浏览器也可以是火狐,IE等。目前自动化的主流浏览器还是chrome谷歌浏览器。
Python+Selenium- 环境搭建
caixiangting的博客
08-02 2642
Selenium是目前最流行的web自动化测试工具,也常用于网络爬虫,已经更新到3以上的版本。
基于PythonSelenium详细教程
热门推荐
qq_43125235的博客
07-08 4万+
Selenium 安装与使用 2.配置浏览器驱动 下载浏览器驱动 这里给出各浏览器(Chrome、Firefox、Edge等)的驱动下载地址,自行下载所需浏览器驱动。 将下载好的浏览器驱动放置在Python安装目录下(即Python环境变量配置目录) 3. 验证 在PyCharm中...
利用Python+selenium技术,实现浏览器基本操作详解,代码有详细注释
CHEN的博客笔记
05-11 8294
首先,需要安装selenium库和对应的浏览器驱动程序。然后,需要下载对应版本的chromedriver,并将其添加到环境变量中。不懂安装的,可以参考代码中涵盖了常见的浏览器操作,包括打开网页、查找元素、输入文本、模拟按键、等待页面加载、获取元素属性、点击链接、返回上一页、刷新页面、最大化窗口和关闭浏览器实例等。同时还添加了详细的注释说明,方便理解和学习。或者也可以通过这种方法实现浏览器基本操作以上代码中,首先导入了webdriver模块和Keys模块。
Python_Selenium自动化测试详细教程
檬柠wan
12-18 1万+
Python SeleniumSelenium WebDriver的Python语言封装,为Python开发者提供了一个方便易用的自动化测试库。它支持多种浏览器(如Chrome、Firefox、Edge等)以及多个操作系统,可以模拟用户在浏览器中的各种行为,包括打开网页、查找元素、输入文本、点击链接、提交表单、上传文件等。
python&selenium自动化测试实战项目(完整、全面)
自动化测试技术栈
12-12 1万+
之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习。(注:项目是针对我们公司内部系统的测试,只能内部网络访问,外部网络无法访问)
Python+Selenium自动化环境搭建与操作
weixin_43696837的博客
07-27 2945
Selenium 是什么?Selenium是针对Web应用的开源自动化测试工具,通过编写模拟用户操作的脚本,它会打开浏览器对Web应用进行黑盒测试。可以方便的用于功能测试、兼容性测试、 稳定性测试及并发测试。目前已被主流浏览器厂商广泛支持,同时也是很多其它自动化测试工具(比如,RobotFramework)的底层核心技术。
python+selenium 方法大全
DJ355的博客
08-03 396
Python + Selenium 是一个非常强大的自动化测试组合,可以用来测试 Web 应用程序的功能和性能。一、selenium 定位方法1、WebDriver8 种基本元素定位方式1)find_element_by_id() 根据 id 属性进行定位2)find_element_by_name() 根据 name 元素进行定位3)find_element_by_class_name() 根据 class 的名字进行定位。
python+Selenium自动化测试教程
07-27
你好!关于PythonSelenium的自动化测试教程,我可以给你一些指引。首先,你需要安装PythonSelenium库。你可以在Python官方网站上下载并安装Python。安装完成后,你可以使用pip命令来安装Selenium库,具体命令是"pip install selenium"。 一旦你安装好了PythonSelenium,你可以开始编写自动化测试脚本。首先,你需要导入Selenium库: ```python from selenium import webdriver ``` 然后,你可以创建一个浏览器对象,比如使用Chrome浏览器: ```python driver = webdriver.Chrome() ``` 接下来,你可以使用driver对象来操作浏览器。比如,你可以打开一个网页: ```python driver.get("https://www.example.com") ``` 你还可以通过查找元素的方式来与页面进行交互。比如,你可以通过元素的id来定位一个输入框,并输入文本: ```python element = driver.find_element_by_id("input_box") element.send_keys("hello world") ``` 还有很多其他的操作,比如点击按钮、获取元素的文本等等。你可以通过查阅Selenium的官方文档来学习更多操作。 最后,不要忘记在测试完成后关闭浏览器: ```python driver.quit() ``` 这只是一个简单的示例,希望能帮助到你入门自动化测试。如果你想深入学习,可以参考一些在线教程或者书籍,比如《Python自动化测试实战》等。祝你学习顺利!如果你还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Java-三层架构 3784
  • Java-蓝桥算法圆的面积,序列求和 1542
  • Python+Selenium教程 1032
  • Java-阶段学习总结 994
  • Java-排序链表问题 927

分类专栏

  • python 1篇
  • 算法 11篇
  • 学习内容 6篇
  • JAVA 14篇
  • 笔记 7篇
  • SpringStudy 2篇
  • MySQL 1篇
  • 前端知识 1篇

最新评论

  • Java-Spring程序开发

    ci_keer: 现在已经不用xml 配置的方式了, 建议看看yaml配置方式。先理解吧xml配置也好!!! 如果bean中没有默认无参构造函数 应该是如果编写有参构造函数,无参构造函数最好写上。

  • XML详解

    ci_keer: 整理很好,非常棒, 加油哦

  • 2021-10-28

    SpringCloudAlibaba: 慢慢来,成功总是留给有准备的人的,加油小可爱!!!表情包表情包表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Java-2023第十四届蓝桥杯Java B组题解
  • Java-蓝桥杯-集合(容器)在竞赛中的使用
  • 蓝桥杯Java-大数(整数,小数)处理
2023年11篇
2022年25篇
2021年9篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网为树木起名中方愿同阿保持沟通拿来吧你是什么梗电脑文件夹加密华人第一成人社区青菜公司起名的名字郑起名大全男孩宝宝起名带紫柯震东小时代贝克勒尔北广传媒翁姓女孩起名鼠年黄文亮处女调教部下载起名大全免费版下载给医药器械公司起名情侣起名配qq爱国头像澄海3c5.49地图下载奇幻小说排行榜男孩水木组合起名字钰慧篇73-79全文阅读贝男孩起名婴儿起名字生辰八字测名免费五行起名土和水好吗山鹰组合英文网站起名现场直播CCTV5直播吧女孩石姓起名大全数码网店起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化