栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

Selenium—UI自动化测试之八大元素定位方法(最新版) 前言 UI界面本质上就是HTML直接体现,脚本通过HTML标签信息来找到具体的元素。
元素定位:通过代码调用方法查找元素 一、ID定位
  • 概念:通过元素的id属性来定位元素
  • 前置:所要定位的元素必须要有id属性
  • 方法:driver.find_element(By.ID,“”)
    **示例:**输入用户名和密码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1.获取浏览器(创建浏览器驱动对象)
driver = webdriver.Chrome()
# 2.输入url,打开web页面
driver.get("http://hmshop-test.itheima.net/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 time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1.获取浏览器(创建浏览器驱动对象)
driver = webdriver.Chrome()
# 2.输入url,打开web页面
driver.get("http://hmshop-test.itheima.net/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 time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1.获取浏览器(创建浏览器驱动对象)
driver = webdriver.Chrome()
# 2.输入url,打开web页面
driver.get("http://hmshop-test.itheima.net/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 time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1.获取浏览器(创建浏览器驱动对象)
driver = webdriver.Chrome()
# 2.输入url,打开web页面
driver.get("http://hmshop-test.itheima.net/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 time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1.获取浏览器(创建浏览器驱动对象)
driver = webdriver.Chrome()
# 2.输入url,打开web页面
driver.get("http://hmshop-test.itheima.net/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 time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1.获取浏览器(创建浏览器驱动对象)
driver = webdriver.Chrome()
# 2.输入url,打开web页面
driver.get("http://hmshop-test.itheima.net/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 time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1.获取浏览器(创建浏览器驱动对象)
driver = webdriver.Chrome()
# 2.输入url,打开web页面
driver.get("http://hmshop-test.itheima.net/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的简称,使用标签路径来定位

  1. 路径: - 绝对路径:/…/…/ 从根目录开始,逐级查找标签。
    - 相对路径://…//…从任意层级开始,查找标签。
    - 方法:driver.find_element(By.XPATH, “xpath表达式”)
  2. 属性:单属性://*[@属性名=’属性值’]
  3. 属性与逻辑(多个属性):多属性://*[@属性名=’属性值’ and @属性名=’属性值’] 提示:可以使用任何属性。
  4. .属性与层级:说明:如果元素现有的属性不能唯一匹配,需要结合层级使用
    //语法://父标签[@属性=‘值’]/子标签 :必须为直属后代子级。//父标签//后代标签:父标签和后代之间可以跨越元素

5.扩展:

  • 根据显示文本定位://*[text()=‘文本值’] 文本值必须全部匹配
  • 属性值模糊匹配://*[contains(@属性名,‘属性部分值’)]
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1.获取浏览器(创建浏览器驱动对象)
driver = webdriver.Chrome()
# 2.输入url,打开web页面
driver.get("http://hmshop-test.itheima.net/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。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/994606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号