美文网首页
UI自动化- senlenium中的元素定位(二)

UI自动化- senlenium中的元素定位(二)

作者: PeppaTang | 来源:发表于2021-12-31 10:08 被阅读0次

目标
1、掌握xpath和CSS元素定位方
2、掌握元素及浏览器操作

1 xpath元素定位

1.1 什么是xpath

总结:xpath是用来在xml文件中进行元素定位的标记语言,html是一种特殊的xml,所以xpath也可以用在html中

1.2 Xpath定位策略

  • 路径定位
  • 属性定位
  • 属性与逻辑结合
  • 属性与层级结合
1.2.1 路径定位
  • 绝对路径 表达式是以 /html开头,元素的层级之间是以 / 分隔

    相同层级的元素可以使用下标,下标是从1开始.

    需要列出元素所经过的所有层级元素 , 工作当中, 一般不使用绝对路径

    例:/html/body/div/fieldset/form/p[1]/input

  • 相对路径 匹配任意层级的元素, 是以 //tag_name或者//* 开头

    也可以使用下标,下标是从1开始。

    例子://p[5]/button

# 通过xpath的绝对路径定位用户名输入框并输入admin
driver.find_element_by_xpath("/html/body/div/fieldset/form/p/input").send_keys("admin")
# 等待3S
time.sleep(3)
# 通过xapth的相对路径定位密码输入框并输入123
driver.find_element_by_xpath("//form/p[2]/input").send_keys("123")
1.2.2 元素属性定位
  • //*或者//tag_name //*[@attribute='value'] # attribute表示的是元素的属性名,value表示的是元素对应属性值
driver.find_elemet_by_xpath("//*[@placehoulder ='请输入用户名']").send_keys('admin')
1.2.3 属性与逻辑结合定位
  • //* 或者//tag_name 开头 //*[@attribute1='value1' and @attribute2='value2']
driver.find_element_by_xpath("//input[@name ='user' and @class= 'login']").sendkeys('admin')
1.2.4 属性与层级结合定位
  • 是以//*或者//tag_name开头 //p[@id='pa']/input

    在任意层级当中,都可以结合属性来使用

driver.find_element_by_xpath("//p[@id='p1']/input").send_keys("admin")
1.2.5 XPATH扩展
  • //*[text() = 'value'] value表示的是要定位的元素的全部文本内容.

  • //*[contains(@attribute,'value')] attribute表示的属性名称, value表示的是字符串

    要定位的元素中,attribute属性的属性值包含了value的内容。

  • //*[starts-with(@attribute,'value')] attribute表示的属性名称, value表示的是字符串

    要定位的元素,attribute属性的属性值是以value开头

2、CSS定位

2.1 什么是CSS

总结:css是可以用来在selenium中定位元素的

CSS定位元素的方法: find_element_by_css_selector(css_selector) # css_selector表示的是CSS选择器表达式

2.2 CSS定位策略

  • id选择器
  • class选择器
  • 元素选择器
  • 属性选择器
  • 层级选择器
2.2.1 id选择器
  • 表达式: #id # 表示通过元素的ID属性进行元素选择 id 表示的的id属性的属性值
driver.find_element_by_css_selector('#user').send_keys('admin')
2.2.2 class选择器
  • 表达式: .class # .表示通过元素的class属性进行元素选择, class表示的class属性的其中一个属性值
driver.find_element_by_css_selector('.email').send_keys('123@qq.com')
2.2.3 元素选择器
  • 就是通过元素标签名称来选择元素 。表达式: tag_name 不推荐使用
2.2.4 属性选择器
  • 就是通过元素的属性来选择元素。 表达式:[attribute='value'] #attribute 表示的是属性名称,value表示的是属性值
    如果使用的是class属性,需要带上class的全部属性值
driver.find_element_by_css_selector("input").send_keys("admin")
# 通过css的属性选择器定位电子邮箱输入框,输入123@qq.com
driver.find_element_by_css_selector("[class='emailA dzyxA']").send_keys("123@qq.com")
  • 父子层级关系选择 器

    • 表达式: element1>element2 通过element1来找element2并且element2是element1的直接子元素
  • 隔代层级关系选择器

    • 表达式: element1 element2 通过element1来找element2并且element2是element1的后代元素
driver.find_element_by_css_selector('.zc #userA').send_keys('admin')
2.2.6CSS扩展
  • input[type^='value'] input表示标签名称,type表示属性名称, value表示的文本内容

    查找元素type属性值是以value开头的元素

  • input[type$='value'] input表示标签名称,type表示属性名称, value表示的文本内容

    查找元素type属性值以value结尾的元素

  • input[type*='value'] input表示标签名称,type表示属性名称, value表示的文本内容

    查找元素type属性值包含value的元素

image-20200622150415134.png

4、定位元素的另外一种写法

  • find_element(By.ID, id) 需要导入By类。

二、元素操作及浏览器操作方法

1、元素操作

  • 点击操作 element.click() element表示的是元素对象
  • 输入操作 element.send_keys("value") element表示的是元素对象, value表示的是要输入的内容
  • 清除操作 element.clear() element表示的是元素对象. 将输入框里面的内容全部清除
import time
from selenium import webdriver
frome senlenium,webdriver.common.by import By

driver = webdriver.Chrome()
# 打开测试网站
driver.get('' ")
driver.find_element(By.ID,'userA').send_keys('admin')
driver.find_element(By.ID, 'passwordA').send_kes('123456')
driver.find_element(By.XPATH, "//*[@class='emailA dzyxA']").send_keys("123@qq.com")
# 2).间隔3秒,修改电话号码为:18600000000
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, ".telA").clear()
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, ".telA").send_keys("18600000000")

# 等待3S
time.sleep(3)
# 退出
driver.quit()

2、浏览器操作

  • 浏览器常用操作方法
  1. maximize_window() 最大化浏览器窗口 --> 模拟浏览器最大化按钮 实例化浏览器驱动之后,就可以调用窗口最大化的方法

  2. set_window_size(width, height) 设置浏览器窗口大小 --> 设置浏览器宽、高(像素点)

  3. set_window_position(x, y) 设置浏览器窗口位置 --> 设置浏览器位置

    x,y是一个坐标点,通过此坐标点确定浏览器最左上角的位置,以此确定浏览器在屏幕上的位置。

    x, y不能超过屏幕的分辨率大小

# 导包
import timefrom selenium import webdriver
# 创建浏览器驱动对象
from selenium.webdriver.common.by
 import By
driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
# 打开测试网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")time.sleep(3)
# 设置窗口大小
driver.set_window_size(500, 500)
time.sleep(3)
# 设置窗口位置
driver.set_window_position(300, 300
)# 等待
3Stime.sleep(3)
# 退出
driver.quit()
  1. back() 后退 --> 模拟浏览器后退按钮
  2. forward() 前进 --> 模拟浏览器前进按钮
  3. refresh() 刷新 --> 模拟浏览器F5刷新
  4. close() 关闭当前窗口 --> 模拟点击浏览器关闭按钮
  5. quit() 关闭浏览器驱动对象 --> 关闭所有程序启动的窗口
driver.back()
driver.forward()
driver.find_element(By.XPATH, "//*[text()='访问 新浪 网站']").click()
driver.close()
driver.quit()
  1. title 获取页面title
  2. current_url 获取当前页面URL

3、获取元素信息

  • 为什么要学习获取元素信息的方法

    主要为了获取相关的信息进行断言,判断自动化用例最终的执行结果。

  • 获取元素常用的方法:

    • size 获取元素的大小 返回的是一个字典,里面包含 元素高度和宽度的值
    • text 获取元素的文本内容
    • get_attribute("attribute") 获取元素对应属性名称的属性值 , attribute表示的是属性名
#1. 获取用户名输入框的大小
driver.find_element(By.ID,'userA').size

#2. 获取页面上第一个超链接文本的内容
driver.find_element(By.LINK_TEXT,'新浪').text
#3. 获取第一个超链接的地址
driiver.find_element(By.LINK_TEXT.'新浪').get_attribute('href')

  • is_displaye() 判断元素是否可见 返回值为true 或者false
  • is_enabled() 判断元素是否可用,返回值true或者false
  • is_selected() 判断复选框或者单选框是否被选中,返回值为true或者false
# 4. 判断span元素是否可见,
print(driver.find_element(By.Name, 'sp1').is_dispalyed())

# 判断取消按钮是否可用
print(driver.find_element(By.ID, 'cancelA').is_enabled())

# 判断页面中’旅游‘对应的复选框是否选中状态
print(driver.find_element(By.ID, 'lyA').is_selected())

相关文章

  • UI自动化- senlenium中的元素定位(二)

    目标1、掌握xpath和CSS元素定位方2、掌握元素及浏览器操作 1 xpath元素定位 1.1 什么是xpat...

  • senlenium中的元素定位

    id定位 name定位 class_name 定位 tag_name定位 link_text定位 partail_...

  • WebUi自动化测试

    一、UI自动化测试基础知识点(元素定位暂不写) 二、自动化项目实战

  • Selenium三种等待方式的使用

    UI自动化测试,大多都是通过定位页面元素来模拟实际的生产场景操作。但在编写自动化测试脚本中,经常出现元素定位不到的...

  • UI自动化测试平台

    UI 自动化测试平台初版踩坑落地、功能暂时还比较简陋 UI自动化测试 基于selenium元素定位 css/nam...

  • 使用selenium在Console中定位元素

    原文链接: UI自动化之:在Console中定位元素技巧[https://my.oschina.net/u/462...

  • [AP_10] uiautomator元素定位 |Appium元

    目录结构 一、uiautomator 元素定位 1. Android UI自动化测试工具概述 Android端UI...

  • selenium—js插件元素定位方法

    主题:解决selenium UI自动测试过程中遇到弹窗元素定位不到的问题 前言:我们在做UI自动化测试的时候经常会...

  • 2018-08-20

    在UI层面的自动化测试开发中,元素的定位与操作是基础,也是经常遇到的困难所在。webdriver提供了8种定位: ...

  • 1、自动化测试问题

    1、在做UI自动化测试中,代码要写到什么程度?(能实现简单的功能就可以吗?元素定位,点击等操作;) 2、在做UI自...

网友评论

      本文标题:UI自动化- senlenium中的元素定位(二)

      本文链接:https://www.haomeiwen.com/subject/whdiqrtx.html