转载请注明出处?
作者:测试蔡坨坨
原文链接:caituotuo.top/63099961.html
你好,我是测试蔡坨坨 。
最近收到不少初学UI自动化测试的小伙伴私信,对于元素的定位还是有些头疼,总是定位不到元素,以及不知道用哪种定位方式更好 。
其实UI自动化测试的本质就是将手工测试的一系列动作转化成机器自动执行,可以简单概括为五大步骤:定位元素 - 操作元素 - 模拟页面动作 - 断言结果 - 生成报告 。所以很多同学在学习时,都是以元素定位作为入门导向,好的开始就是成功的一半 。因此,本篇将详细介绍Selenium八大元素定位方法,以及在自动化测试框架中如何对元素定位方法进行二次封装,最后会给出一些在定位元素时的经验总结 。
注意:本文出现的代码示例均以 Python3.10 + Selenium4.5.0 为准,由于网上大多数教程都是Selenium3,Selenium4相比于Selenium3会有一些新的语法,如果你还不了解Selenium4,推荐先阅读往期文章「Selenium 4 有哪些不一样?」 。
Selenium八大元素定位所谓八大元素定位方式就是id、name、class_name、tag_name、link_text、partial_link_text、xpath、css_selector 。
在介绍定位方式之前先来说一下定位工具,以Chrome浏览器为例,使用F12或右键检查进入开发者工具 。
文章插图
ID通过元素的id属性定位,一般情况下id在当前页面中是唯一的 。使用id选择器的前提条件是元素必须要有id属性 。由于id值一般是唯一的,因此当元素存在id属性值时,优先使用id方式定位元素 。
例如:下面的这个input标签的id属性值为kw
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
语法:driver.find_element(By.ID, "id属性值")
举栗:# author: 测试蔡坨坨# datetime: 2022/10/22 19:08# function: id定位import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("https://www.baidu.com")driver.find_element(By.ID, "kw").send_keys("测试蔡坨坨")driver.find_element(By.ID, "su").click()time.sleep(3)driver.quit()
NAME通过元素的name属性来定位 。name定位方式使用的前提条件是元素必须有name属性 。由于元素的name属性值可能存在重复,所以必须确定其能够代表目标元素唯一性后,方可使用 。当页面内有多个元素的特征值相同时,定位元素的方法执行时只会默认获取第一个符合要求的特征对应的元素 。
例如:下面的这个input标签的name属性值为wd
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
语法:driver.find_element(By.NAME, "name属性值")
举栗:# author: 测试蔡坨坨# datetime: 2022/10/22 19:23# function: name定位import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("https://www.baidu.com")driver.find_element(By.NAME, "wd").send_keys("测试蔡坨坨")driver.find_element(By.ID, "su").click()time.sleep(3)driver.quit()
CLASS_NAME通过元素的class属性来定位,class属性一般为多个值 。使用class定位方式的前提条件是元素必须要有class属性 。虽然方法名是class_name,但是我们要找的是class属性 。
例如:下面这个input标签的class属性值为but1
<input class="but1" type="text" name="key" placeholder="请输入你要查找的关键字" value="">
语法:driver.find_element(By.CLASS_NAME, "class属性值")
举栗:# author: 测试蔡坨坨# datetime: 2022/10/22 19:31# function: class定位import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()# 打开电商网站driver.get("http://127.0.0.1")driver.maximize_window()# 搜索框中输入 鞋子driver.find_element(By.CLASS_NAME, "but1").send_keys("鞋子")# 点击搜索driver.find_element(By.CLASS_NAME, "but2").click()
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 三 Selenium+Python系列 - 常见浏览器操作
- 二 Selenium+Python系列 - 元素定位那些事
- 厨房小蟑螂怎么彻底消灭
- 怎么快速学会河南话
- 恋爱不懂及时止损,会被伤得彻底的星座
- 感情中慢慢才学会信任对方的星座
- 为爱不择手段而彻底失去爱情的星座
- selenium4-定位单个页面元素
- 感情里学会经营和思考的星座女
- 家里有蛾蠓怎么彻底清除