2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > UI自动化测试之八大元素定位方法(最新版)

UI自动化测试之八大元素定位方法(最新版)

时间:2023-05-16 03:17:35

相关推荐

UI自动化测试之八大元素定位方法(最新版)

Selenium—UI自动化测试之八大元素定位方法(最新版)

前言

UI界面本质上就是HTML直接体现,脚本通过HTML标签信息来找到具体的元素。

元素定位:通过代码调用方法查找元素

一、ID定位

概念:通过元素的id属性来定位元素前置:所要定位的元素必须要有id属性方法:driver.find_element(By.ID,“”)

**示例:**输入用户名和密码

import timefrom selenium import webdriverfrom mon.by import By# 1.获取浏览器(创建浏览器驱动对象)driver = webdriver.Chrome()# 2.输入url,打开web页面driver.get("http://hmshop-/home/User/login.html")# 3.查找操作元素# 用户名driver.find_element(By.ID, "username").send_keys("111111")# 密码driver.find_element(By.ID, "password").send_keys("000000000")time.sleep(3)# 4.关闭浏览器驱动对象driver.quit()

二、name定位

⽅法:driver.find_element(By.NAME,“name属性值”)前置: 标签必须有name属性特点: 当前⻚⾯可以重复提示: 由于name属性值可以重复,所以使⽤时需要查看是否为唯⼀

示例

import timefrom selenium import webdriverfrom mon.by import By# 1.获取浏览器(创建浏览器驱动对象)driver = webdriver.Chrome()# 2.输入url,打开web页面driver.get("http://hmshop-/home/User/login.html")# 3.查找操作元素# 用户名driver.find_element(By.NAME, "username").send_keys("111111")# 密码driver.find_element(By.NAME, "password").send_keys("000000000")time.sleep(3)# 4.关闭浏览器驱动对象driver.quit()

三、class定位

⽅法:driver.find_element(By.CLASS_NAME,“class属性值”)前置: 标签必须有class属性特点: class属性可以有多个值。提示:如果标签有多个class值,只能任意选择其中一个,如下图driver.find_element(By.CLASS_NAME,“c1”)

示例

import timefrom selenium import webdriverfrom mon.by import By# 1.获取浏览器(创建浏览器驱动对象)driver = webdriver.Chrome()# 2.输入url,打开web页面driver.get("http://hmshop-/home/User/login.html")# 3.查找操作元素# 用户名driver.find_element(By.CLASS_NAME, "text_cmu").send_keys("111111")time.sleep(3)# 4.关闭浏览器驱动对象driver.quit()

四、Tag_name定位

说明:根据的标签名进⾏定位⽅法:driver.find_element(By.TAG_NAME,“标签名”)提示:如果⻚⾯存在多个相同标签,默认返回第⼀个。

import timefrom selenium import webdriverfrom mon.by import By# 1.获取浏览器(创建浏览器驱动对象)driver = webdriver.Chrome()# 2.输入url,打开web页面driver.get("http://hmshop-/home/User/login.html")# 3.查找操作元素# 用户名driver.find_element(By.TAG_NAME, "input").send_keys("111111")time.sleep(3)# 4.关闭浏览器驱动对象driver.quit()

五、link_text定位

说明:根据链接文本(a标签)定位方法:driver.find_element(By.LINK_TEXT,“链接文本”)特点:传入的链接文本,必须全部匹配,不能模糊。

import timefrom selenium import webdriverfrom mon.by import By# 1.获取浏览器(创建浏览器驱动对象)driver = webdriver.Chrome()# 2.输入url,打开web页面driver.get("http://hmshop-/home/User/login.html")# 3.点击超链接driver.find_element(By.LINK_TEXT, "忘记密码?").click()time.sleep(3)# 4.关闭浏览器驱动对象driver.quit()

六、partial_link_text定位

说明:根据链接(a标签)文本定位方法:driver.find_element(By.PARTIAL_LINK_TEXT,“链接文本”)特点:传入的链接文本,支持模糊匹配。

import timefrom selenium import webdriverfrom mon.by import By# 1.获取浏览器(创建浏览器驱动对象)driver = webdriver.Chrome()# 2.输入url,打开web页面driver.get("http://hmshop-/home/User/login.html")# 3.点击超链接driver.find_element(By.PARTIAL_LINK_TEXT, "忘").click()time.sleep(3)# 4.关闭浏览器驱动对象driver.quit()

扩展-查找一组元素

说明:返回列表格式,要使用需要列表下标(索引)或遍历.方法:driver.find_elements(By.TAG_NAME, “input”)特点:⼋⼤元素定位⽅法,都可以使⽤⼀组元素定位,如果没有搜索到符合标签,返回空

列表。

import timefrom selenium import webdriverfrom mon.by import By# 1.获取浏览器(创建浏览器驱动对象)driver = webdriver.Chrome()# 2.输入url,打开web页面driver.get("http://hmshop-/home/User/login.html")# 3.查找操作元素# 查找所有的input标签inputs = driver.find_elements(By.TAG_NAME, "input")inputs[0].send_keys("11111")inputs[1].send_keys("11111")inputs[2].send_keys("11114")time.sleep(3)# 4.关闭浏览器驱动对象driver.quit()

七、xpath定位

为什么要学习xpath,css

1.如果标签没有(id,name,class)3个属性,也不是链接标签,只能使用Tag_name定位,比较麻烦

2.方便在工作中查找元素,使用xpath和css比较方便(支持任意属性,层级)来找元素

什么是xpath?

说明:XPATH是xml path的简称,使用标签路径来定位

路径: - 绝对路径:/…/…/ 从根目录开始,逐级查找标签。

- 相对路径://…//…从任意层级开始,查找标签。

- 方法:driver.find_element(By.XPATH, “xpath表达式”)属性:单属性://*[@属性名=’属性值’]属性与逻辑(多个属性):多属性://*[@属性名=’属性值’ and @属性名=’属性值’] 提示:可以使用任何属性。.属性与层级:说明:如果元素现有的属性不能唯一匹配,需要结合层级使用

//语法://父标签[@属性=‘值’]/子标签 :必须为直属后代子级。//父标签//后代标签:父标签和后代之间可以跨越元素

5.扩展:

根据显示文本定位://*[text()=‘文本值’] 文本值必须全部匹配属性值模糊匹配://*[contains(@属性名,‘属性部分值’)]

import timefrom selenium import webdriverfrom mon.by import By# 1.获取浏览器(创建浏览器驱动对象)driver = webdriver.Chrome()# 2.输入url,打开web页面driver.get("http://hmshop-/home/User/login.html")# 3.查找操作元素# 使用绝对路径输入用户名driver.find_element(By.XPATH, "/html/body/div[2]/div/div[2]/div/form/div/div[1]/input").send_keys(1111)time.sleep(2)# 使用相对路径输入用户名# driver.find_element(By.XPATH, "//div[2]//input").send_keys(2222)# 使用xpath属性输入用户名(单属性)# driver.find_element(By.XPATH, "//*[@id='username']").send_keys(2222)# 属性与逻辑/多属性(and)# driver.find_element(By.XPATH, "//*[@name='username' and @id='username']").send_keys(2222)# 属性与层级# driver.find_element(By.XPATH, "//div[@class='text_uspa']/input").send_keys(2222)# 扩展 关键字:包含 contains# driver.find_element(By.XPATH, "//input[contains(@placeholder,'手机')]").send_keys(2222)# 扩展 根据链接文本driver.find_element(By.XPATH, "//*[text()='忘记密码?']").click()time.sleep(3)# 4.关闭浏览器驱动对象driver.quit()

八、css定位

说明:css选择器是html查找元素的工具。策略:

id选择器:#id属性值类选择器:.class属性值标签选择器:标签名 (注意标签名是否在页面中唯一,否则返回单个或所有)属性选择器:[属性名='属性值'] (标签任意属性都可以)层级选择器:父子关系:选择器>选择器 后代关系:选择器 选择器。(选择器使用任何一种css选择器都可以)

总结

结论:

首推css选择器定位。原因:执行速度快。如果有ID属性,使用#id。如果没有id属性,使用其他有的属性(能代表唯一的属性),如果属性都代表不了唯一,使用层级。如果css解决不了,使用xpath。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。