关于Python Selenium的基本用法

Python Selenium实现自动化测试及Chrome驱动使用 在软件开发过程中,自动化测试是一个至关重要的环节,可以有效地提高测试效率、减少人工测试成本,并且能够在短时间内发现潜在的问题。而Python中的Selenium库则是一个强大的自动化测试工具,可以模拟用户在浏览器中的操作,从而实现自动化测试的功能。本文将介绍如何使用Python Selenium库来实现自动化测试,并详细讲解Chrome驱动的使用方法。 阅读详情

Selenium 作为一款 Web 自动化测试框架,提供了诸多操作浏览器的方法,本节对其中的常用方法做详细介绍。

定位节点

Selenium 提供了 8 种定位单个节点的方法,如下所示:

方法说明
find_element_by_id()通过 id 属性值定位
find_element_by_name()通过 name 属性值定位
find_element_by_class_name()通过 class 属性值定位
find_element_by_tag_name()通过 tag 标签名定位
find_element_by_link_text()通过标签内文本定位,即精准定位。
find_element_by_partial_link_text()通过标签内部分文本定位,即模糊定位。
find_element_by_xpath()通过 xpath 表达式定位
find_element_by_css_selector()通过 css 选择器定位

假设下面代码某个页面的代码片段,如下所示:

  1. <form id="form" class="fm" name="f" action="c.biancheng.net">
    
  2.  <span class="btn"></span>
    
  3.  <input id="kw" class="s_ipt_wr" name="wd" value="" maxlength="255"autocomplete="off">
    

下面使用表格中提供的方法定位 input 输出框。如下所示:

  1. #创建browser是浏览器对象
  2. browser = webdriver.Chrome()
  3. #访问某个url得到上述代码片段
  4. browser.get(‘url’)
  5. #通过id定义输入框
  6. browser.dr.find_element_by_id(“kw”)
  7. #通过class定义
  8. browser.find_element_by_class_name(“s_ipt_wr”)
  9. #通过name定位
  10. browser.find_element_by_name(“wd”)
  11. #通过tag name定位:
  12. browser.find_element_by_tag_name(“input”)
  13. #通过xpath定位
  14. browser.find_element_by_xpath(“//*[@id=‘kw’]”)
  15. #通过css选择器定位
  16. browser.find_element_by_css_selector(“#kw”)

通过 a 标签内的文本内容定位节点,如下所示:

**

<a class="vip" href="http://c.baincheng.net">C语言中文网</a>
<a class="search" href="http://www.baidu.com">hao123</a>

示例如下:

  1. #使用全部文本内容定位链接
  2. browser.find_element_by_link_text(“c语言中文网”)
  3. #使用部分文本内容定位链接
  4. browser.find_element_by_partial_link_text(“123”)

如果您想定位一组元素,方法如下所示:

**

find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

定位一组元素的方法与定位单个元素类似,唯一的区别就是 element 后面多了一个 s(表示复数),因此上述方法的返回值是一个列表,您可以使用 for 循环拿到所有的元素节点。

控制浏览器

Selenium 可以操控浏览器的窗口大小、刷新页面,以及控制浏览器的前进、后退等

1) 设置浏览器窗口大小、位置
  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. driver.get(“http://www.baidu.com”)
  4. #参数数字为像素点
  5. driver.set_window_size(480, 800)
  6. #设置窗口位置
  7. driver.set_window_position(100,200)
  8. #同时设置窗口的大小和坐标
  9. driver.set_window_rect(450,300,32,50)
  10. #退出浏览器
  11. driver.quit()
2) 控制网页前进、后退、刷新页面
  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. 访问C语言中文网首页

  4. first_url= ‘http://c.biancheng.net’
  5. driver.get(first_url)
  6. 访问c语言教程

  7. second_url=‘http://c.biancheng.net/c/’
  8. driver.get(second_url)
  9. 返回(后退)到c语言中文网首页

  10. driver.back()
  11. 前进到C语言教程页

  12. driver.forward()
  13. 刷新当前页面相当于F5

  14. driver.refresh()
  15. 退出/关闭浏览器

  16. driver.quit()

WebDriver常用方法

上文中介绍了如何定位元素,以及如何设置浏览的大小、位置。 定位元素节点只是第一步, 定位之后还需要对这个元素进行操作, 比如单击按钮,或者在输入框输入文本 , 下面介绍 WebDriver 中的最常用方法:

**

# 请求url
get(url)
# 模拟键盘输入文本
send_keys (value)
# 清除已经输入的文本
clear():
# 单击已经定位的元素
click():
# 用于提交表单,比如百度搜索框内输入关键字之后的“回车” 操作
submit():
#返回属性的属性值,返回元素的属性值,可以是id、name、type 或其他任意属性
get_attribute(name)
# 返回布尔值,检查元素是否用户可见,比如 display属性为hidden或者none
is_displayed() 

示例如下:

  1. from selenium import webdriver
  2. import time
  3. driver = webdriver.Chrome()
  4. driver.get(“https://www.baidu.com”)
  5. #模拟键盘,输出文本
  6. driver.find_element_by_id(“kw”).send_keys(“C语言中文网”)
  7. #单击“百度”一下查找
  8. driver.find_element_by_id(“su”).click()
  9. time.sleep(3)
  10. #退出浏览器
  11. driver.quit()

除了上述方法外, WebDriver 还有一些常用属性,如下所示:

  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. 获取HTML结构源码

  4. driver.page_source
  5. #在源码中查找指定的字符串
  6. driver.page_source.find(‘字符串’)
  7. 返回百度页面底部备案信息

  8. text = driver.find_element_by_id(“cp”).text
  9. print(text)
  10. 获取输入框的尺寸

  11. size = driver.find_element_by_id(‘kw’).size
  12. print(size)

输出结果:

**

©2015 Baidu 使用百度前必读 意见反馈 京 ICP 证 030173 号

{'width': 500, 'height': 22}

Selenium事件处理

Selenium WebDriver 提供了一些事件处理函数(鼠标、键盘等),下面我们对常用的事件函数做简单介绍。

1) 鼠标事件

Selenium WebDriver 将关于鼠标的操作方法都封装在 ActionChains 类中,使用时需要引入 ActionChains 类,如下所示:

**

from selenium.webdriver.common.action_chains import ActionChains

该类包含了鼠标操作的常用方法:

方法说明
ActionChains(driver)构造 ActionChains 鼠标对象。
click()单击
click_and_hold(on_element=None)单击鼠标左键,不松开
context_click()右击
double_click()双击
drag_and_drop()拖动
move_to_element(above)执行鼠标悬停操作
context_click()用于模拟鼠标右键操作, 在调用时需要指定元素定位。
perform()将所有鼠标操作提交执行。

示例如下:

  1. from selenium import webdriver
  2. #导入 ActionChains 类
  3. from selenium.webdriver.common.action_chains import ActionChains
  4. driver = webdriver.Chrome()
  5. driver.get(“http://c.biancheng.net”)
  6. 通过xpath表达式定位到要悬停的元素

  7. above = driver.find_element_by_xpath(‘//ul[@id=“ad-link-top”]/li[1]’)
  8. 对定位到的元素执行鼠标悬停操作

  9. ActionChains(driver).move_to_element(above).perform()
2) 键盘事件

Selenium WebDriver 的 Keys 模块提供了模拟键盘输入的 send_keys() 方法,除此之外,该模块也提供了操作键盘的其他方法,比如复制、粘贴等等。

在使用之前,首先需要导入 Keys 类,如下所示:

**

from selenium.webdriver.common.keys import Keys

下面列举了一些常用方法:

方法说明
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…Fn)键盘 F1…Fn
keys.down(value,element=None)按下键盘上的某个键
keys.up(value,element=None)松开键盘上的某个键

示例如下:

  1. from selenium import webdriver
  2. 引入 Keys 模块

  3. from selenium.webdriver.common.keys import Keys
  4. driver = webdriver.Chrome()
  5. driver.get(“http://www.baidu.com”)
  6. 输入框输入内容

  7. driver.find_element_by_id(“kw”).send_keys(“C语言中文网H”)
  8. 删除多输入的一个H

  9. driver.find_element_by_id(“kw”).send_keys(Keys.BACK_SPACE)
  10. #单击“百度”一下查找
  11. driver.find_element_by_id(“su”).click()
  12. time.sleep(3)
  13. driver.quit()

其它键盘操作方法,如下所示:

  1. 输入空格键 + “Python教程”

  2. driver.find_element_by_id(“kw”).send_keys(Keys.SPACE)
  3. driver.find_element_by_id(“kw”).send_keys(“Python教程”)
  4. ctrl+a 全选输入框内容

  5. driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL, ‘a’)
  6. ctrl+x 剪切输入框内容

  7. driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL, ‘x’)
  8. ctrl+v 粘贴内容到输入框

  9. driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL, ‘v’)
  10. 使用回车键来代替单击操作click

  11. driver.find_element_by_id(“su”).send_keys(Keys.ENTER)

无界面浏览器

Chromedriver 每一次运行都要打开浏览器,并执行相应的输入、搜索等操作,这样会导致浏览器交互能力变差,浪费许多时间。 Selenium 为了增强浏览器的交互能力,允许您使用无头浏览器模式,也就是无界面浏览器,它被广泛的应用于爬虫和自动化测试中。通过以下代码可以设置无头浏览器模式:

  1. from selenium import webdriver
  2. import time
  3. options=webdriver.ChromeOptions()
  4. options.add_argument(‘–headless’)#无界面浏览
  5. driver=webdriver.Chrome(options=options)
  6. driver.get(‘https://www.baidu.com’)
  7. kw1=driver.find_element_by_id(‘kw’)
  8. print(driver.title)
  9. time.sleep(3)
  10. #关闭当前界面,只有一个窗口
  11. driver.close()
  12. #关闭所有界面
  13. driver.quit()

除了可以设置无头界面之外,Selenium 还支持其他一些浏览器参数设置,如下所示:

**

opption.add_argument('--window-size=600,600') #设置窗口大小
opption.add_argument('--incognito') #无痕模式
opption.add_argument('--disable-infobars') #去掉chrome正受到自动测试软件的控制的提示
opption.add_argument('user-agent="XXXX"') #添加请求头
opption.add_argument("--proxy-server=http://200.130.123.43:3456")#代理服务器访问
opption.add_experimental_option('excludeSwitches', ['enable-automation'])#开发者模式
opption.add_argument('blink-settings=imagesEnabled=false')  #禁止加载图片
opption.add_argument('lang=zh_CN.UTF-8') #设置默认编码为utf-8
opption.add_extension(create_proxyauth_extension(
           proxy_host='host',
           proxy_port='port',
           proxy_username="username",
           proxy_password="password"
       ))# 设置有账号密码的代理
opption.add_argument('--disable-gpu')  # 这个参数可以规避谷歌的部分bug
opption.add_argument('--disable-javascript')  # 禁用javascript
opption.add_argument('--hide-scrollbars')  # 隐藏滚动条

执行JS脚本

WebDriver 提供了 execute_script() 方法来执行 JavaScript 代码,比如控制浏览器的滚动条。示例如下:

  1. from selenium import webdriver
  2. from time import sleep
  3. 访问百度

  4. driver=webdriver.Chrome()
  5. driver.get(“http://www.baidu.com”)
  6. 最大化浏览器窗口

  7. driver.maximize_window()
  8. 搜索

  9. driver.find_element_by_id(“kw”).send_keys(“C语言中文网”)
  10. driver.find_element_by_id(“su”).click()
  11. sleep(3)
  12. 通过js代码设置滚动条位置,数值代表(左边距,上边距)

  13. js=“window.scrollTo(100,500);”
  14. #执行js代码
  15. driver.execute_script(js)
  16. sleep(5)
  17. driver.quit()

如果想了解更多关于 Selenium 的知识,请参考官方文档:https://www.selenium.dev/documentation/en/

这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!

优快云大礼包:全网最全《全套Python学习资料》免费分享🎁

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉优快云大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

​

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉优快云大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

​

Python Selenium基本用法 Selenium 作为一款 Web 自动化测试框架,提供了诸多操作浏览器的方法,本节对其中的常用方法做详细介绍。 阅读详情

相关推荐

解决selenium的WebDriver object has no attribute ‘find_element_by_xpath‘问题

但有时候会出现WebDriver object has no attribute 'find_element_by_xpath’的错误提示,意思是WebDriver对象没有该方法。通过按照上述方式命名webdriver对象,即可避免WebDriver object has no attribute 'find_element_by_xpath’问题。解决selenium的WebDriver object has no attribute 'find_element_by_xpath’问题。

与其临渊羡鱼,不如退而结网 2544

Python webdriver.Chrome()的使用

python 打开浏览器

weixin_37391237的博客 1万+

simulink求解器选择的小tip

给出了simulink选择求解器的一种tip,与积分初值有关。

高能阿博特的博客 2055

Selenium安装WebDriver最新Chrome驱动(含116/117/118/119)

Selenium安装WebDriver最新Chrome驱动

Z_Lisa的博客 19万+

Temporal Fusion Transformer(TFT)与扩散模型融合:时间序列预测新范式

本文探讨了Temporal Fusion Transformer(TFT)与扩散模型融合的时间序列预测新范式。该融合方案利用TFT强大的特征提取与可解释性,为扩散模型提供精准的“导航图”,从而在噪声数据中实现鲁棒预测,并原生支持不确定性量化,输出完整的概率分布与置信区间,为金融、能源等领域的风险决策提供更可靠的依据。

weixin_29096377的博客 290

中科蓝讯(第一次使用指南)

中科蓝讯 新手指南

qq_48579018的博客 1万+

Selenium中WebDriver最新Chrome驱动安装教程

由于日常测试团队中的仿真环境存在着几套最新版本的测试套件,所以经常可以模拟客户由于浏览器或客户端自动升级至最新版后某些功能失效或报错的业务场景(因为我们本身也有提供外包测试的业务),那么今天就来为大家分享一下有关selenium中浏览器驱动下载与管理。

Austin的博客 4122

PVE启动卡在loading initial ramdisk

pve显卡直通导致的异常解决

学而时习之 6689

selenium+python:基本用法

小丫头 321

Workbench-nCode下发动机引擎应力疲劳分析

在工程数据库中定义材料模型参数,结构场分析基本参数:密度7850Kg/m3、弹性模量210E9Pa、泊松比0.3,疲劳分析参数:应力-疲劳曲线表(S-N Curve),应力-疲劳曲线如下图2所示,如果没有合适的数据可使用结构钢材料进行分析。网格为四面体高阶单元,各零件的单元尺寸如下表1所示,单元质量分布如下图3所示。在workbench平台下搭建分析流程如下图6所示,前述设定完成后,提交求解后即可得到相应的应力、应变结果,更新结果后目录树中会有相应的nCode DesignLife插件,如下图7所示。

ansysxuexizhe的博客 1547

电机控制基础,小白入门篇

电机,这个藏在风扇、电动车、机器人里的“动力心脏”,如何精准控制它的转速、方向甚至力量?这篇博客专为完全零基础的小白打造,用“说人话”的方式拆解电机控制的底层逻辑,帮你从“看不懂电路图”到“能调个简单电机”。 电机控制不是“大神专属”,只要掌握“电生磁、磁生力”的底层逻辑,加上动手实践,小白也能快速入门。这篇博客会陪你从“看电机转”到“让电机听话”,把复杂的控制原理变成能上手玩的“小实验”。准备好你的面包板和电机,我们一起开启“电控之旅”吧!

汽车电子软件领域知识分享 5603

基于Python Selenium web测试工具 - 基本用法详解

本文介绍了Selenium,一个用于Web应用程序测试的工具,支持多种浏览器如IE、Firefox、Chrome等。文章详细说明了Selenium的安装步骤,包括通过pip安装Selenium和下载浏览器驱动程序。此外,文章通过实例演示了Selenium的基本用法,如启动浏览器、加载网页、查找元素、输入文本、提交表单等操作。还介绍了如何结合unittest框架编写自动化测试用例,以及如何处理网页元素如输入框、下拉菜单等。最后,文章提到了Selenium的其他功能,如前进后退操作、Cookies管理等,并提供

nhb687096的博客 665

华为OD机试双机位C卷-员工派遣(Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷【员工派遣】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试- 员工派遣,华为OD机考 - 员工派遣。

qq_45776114的博客 1671

超详细selenium基本方法和参数用法详解【从入门到实战】【Python爬虫】

摘要: Selenium是一个用于Web自动化测试和动态网页爬取的工具,支持多种浏览器和编程语言。本文详细介绍了Selenium的基本使用方法,包括安装配置、常用方法(如启动浏览器、查找元素、操作元素)、等待机制以及常见问题解决方案。通过实战示例展示了如何抓取动态加载的网页内容,并附有Mermaid流程图说明工作流程。适合初学者快速掌握Selenium在Python爬虫中的应用。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 3544

PINN求解PDE

PINN求解Dirichlet泊松方程 泊松方程引入 −Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2 u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ω import torch import time import numpy as np import matplotlib.pyplot as plt import torch.nn as nn def UU(X, order,prob):

forrestguang的博客 3804

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Selenium(Python web测试工具)基本用法详解

这篇文章主要介绍了Selenium(Pythonweb测试工具)基本用法,结合实例形式分析了Selenium的基本安装、简单使用方法及相关操作技巧,需要的朋友可以参考下

zhangsiyuan1998的博客 1019

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

selenium python_Selenium(Python web测试工具)基本用法详解

本文实例讲述了Selenium基本用法。分享给大家供大家参考,具体如下:Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看...

weixin_39641103的博客 162

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python中的selenium库的基本用法

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。 通过此行代码可以快速在Python中安装selenium库 pip install Selenium 另外,我们仍需要安装浏览器驱动 Selenium3.x调用浏览器必须有一个webdriver驱动文件 Chrome驱动文件...

Virtualman的专栏 1072
上一篇: Python Selenium的下载以及安装
下一篇: 什么,年后刚工作就接了个Python兼职的大单
AI大模型学习
博客等级 码龄4年 2471粉丝 620原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值