当前位置: 首页 > news >正文

Selenium自动化元素定位方式与浏览器测试脚本

Selenium八大元素定位方法

Selenium可以驱动浏览器完成各种操作,比如模拟点击等。要想操作一个元素,首先应该识别这个元素。人有各种的特征(属性),我们可以通过其特征找到人,如通过身份证号、姓名、家庭住址。
同理,一个元素会有各种的特征(属性),我们可以通过这个属性找到这对象。

在这里插入图片描述

一、ID定位

通过元素的ID属性值来进行元素定位
(在html标准规范中ID值是唯一的)

定位方法:find_element_by_id(id) #id参数表示的是id的属性值;(定位的元素必须有ID属性)
driver.find_element_by_id("kw")

二、NAME定位

通过元素的NAME属性值来进行元素定位;
(name属性值在html页面中是可以重复的);

定位方法:find_element_by_name(name) 
#name参数表示的是name的属性值;
(定位元素必须有NAME属性)driver.find_element_by_name("wd")

三、CLASS_NAME定位

通过元素的CLASS属性值来进行元素定位;
(class属性值在html页面中是可以重复的);

定位方法:find_element_by_class_name(class_name) 
#class_name参数表示的是class的属性值;
(定位元素必须有class属性)

注意:class属性值有多个时(用空格隔开),仅需要其中一个属性值:
(但若是使用Xpath属性定位时,需要用到全部属性值)
比如:driver.find_element_by_class_name(“s_ipt”)

四、TAG_NAME定位(不建议使用)

通过元素的标签名称来进行元素定位,在同一个html页面当中,相同标签元素会有很多;

定位方法:find_element_by_tag_name(tag_name) 
#tag_name参数表示的是元素的标签名;
(定位元素必须有标签名)
如果有重复的元素定位到的元素默认都是第一个;
例:driver.find_element_by_tag_name("input")

五、LINK_TEXT定位

通过超链接的全部文本信息来进行元素定位
(主要用来定位a标签);

定位方法:find_element_by_link_text(link_text) 
#link_text参数表示的是超链接(a标签)的全部文本内容;driver.find_element_by_link_text("新闻")
driver.find_element_by_link_text("地图")

六,PARTIAL_LINK_TEXT定位(使用少)

通过超链接的局部文本信息来进行元素定位(主要用来定位a标签);

定位方法:find_element_by_partial_link_text(partial_link_text) 
#partial_link_text参数表示的是超链接(a标签)的局部文本内容;例:find_element_by_partial_link_text("访问")
find_element_by_partial_link_text("网站")

七、定位一组元素

定位一组元素的方法

find_elements_by_id(id)
find_elements_by_tag_name(tag_name)定位一组元素返回的值是一个里列表;可以通过下标来使用列表中的元素;(下标以0开始)

8,XPATH定位及CSS定位

在页面当中,有一些元素无法通过元素的信息精准的定位到,所以需要Xpath定位

什么是XPATH
Xpath是XML Path的简称,是一门在XML文档中查找元素信息的语言;

XPATH定位策略
路径定位
属性定位
属性与逻辑结合
属性与层级结合

其中路径定位比较常用
定位方法:find_element_by_xpath(xpath) 
#xpath表达式

selenium自动化浏览器测试脚本源码:

from selenium import webdriver
import time# 存放浏览器驱动路径
path = "/usr/local/chromedriver_mac_arm64/chromedriver"# 启动浏览器
driver = webdriver.Chrome(path)# 访问网址
url = "https://www.baidu.com"
driver.get(url)# 等待1s
time.sleep(1)# 找到搜索框元素、输入搜索内容“姚咩咩”并提交
driver.find_element_by_id('kw').send_keys('姚咩咩')# 找到确定按钮框元素、并执行点击操作
driver.find_element_by_id('su').click()
time.sleep(2)# 在浏览器的开发者模式下,找到需要定位元素的xpath并copy下来
# //*[@id="9"]/div/div[1]/h3/a  注意要把双引号改成单引号
result = driver.find_element_by_xpath("//*[@id='9']/div/div[1]/h3/a")#点击该元素访问页面
result.click()#睡眠20s后自动关闭网页
time.sleep(20)
driver.close()
http://www.lryc.cn/news/99044.html

相关文章:

  • 人机交互与人机混合智能的区别
  • 【项目】轻量级HTTP服务器
  • sketch如何在线打开?有没有什么软件可以辅助
  • CSS Flex 笔记
  • Markdown常用标签及其用途-有示例
  • 25.1 Knife4j-Swagger的增强插件
  • 用flask run代替flask run --debug
  • python_day14_综合案例
  • 【算法题】2779. 数组的最大美丽值
  • 文件上传之PHP
  • 人脸检测实战-insightface
  • Linux工具【1】(编辑器vim、编译器gcc与g++)
  • 基于Java+SpringBoot+vue前后端分离古典舞在线交流平台设计实现
  • MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )
  • Qt中的 QIODevice类(包含:随机访问、顺序访问设备)
  • 【JavaScript 07】函数声明 地位平等 函数提升 属性方法 作用域 参数 arguments对象 闭包 IIFE立即调用函数表达式 eval命令
  • MyBatis源码分析_ResultSetHandler(7)
  • Unittest加载执行用例的方法总结
  • 使用预训练的2D扩散模型改进3D成像
  • 微服务测试是什么?
  • 《现代C++教程》笔记(5-7)
  • 红黑树深入剖析【C++】
  • 教育机构视频播放时观看行为分析有哪些应用?
  • Jmeter+验证json结果是否正确小技巧
  • Spring 6.0官方文档示例(22): singleton类型的bean和prototype类型的bean协同工作的方法(一)
  • Android平台GB28181设备接入侧如何同时对外输出RTSP流?
  • el-Cascader 中div上绑定keyDown事件
  • elementUI 表格滚动分页加载请求数据
  • JAVA面试总结-Redis篇章(五)——持久化
  • 【数据结构】·顺序表函数实现·赶紧学起来呀