美文网首页
自动化测试--定位元素

自动化测试--定位元素

作者: xiaohan_zhang | 来源:发表于2020-05-11 23:21 被阅读0次
  • 通过元素id定位元素
    driver.find_element_by_id('kw')
    driver.find_element_by_id('cn.cntv:id/history_image_button')

  • 通过class定位元素
    elements_list = wd.find_elements_by_class_name('title-content-title')

  • 通过name属性定位元素
    elements = wd.find_element_by_name('wd')

  • 通过标签名定位元素
    elements_list = wd.find_elements_by_tag_name('span')

  • 通过link_text定位元素 a标签文字
    element = wd.find_element_by_link_text('新闻')

  • 通过partial_link_text定位元素 模糊匹配 a标签
    a = wd.find_element_by_partial_link_text('地')

webdriver查找的是整个web页面的所有元素,webElement对象查找的是该元素内部的子元素

ele = wd.find_element_by_class_name('s-hotsearch-content')
ele_list = ele.find_elements_by_tag_name('span')
  • CSS选择器
  1. id选择器
    element = wd.find_element_by_css_selector('#su')
  2. class选择器
    elements = wd.find_elements_by_css_selector('.title-content-title')
  3. 标签选择器
    elements = wd.find_elements_by_css_selector('a')
  4. 通过属性定位元素
    element = wd.find_element_by_css_selector('[name="tj_settingicon"]')
  5. 直接子元素选择器
    element = wd.find_element_by_css_selector('ul>[data-index="0"]>.title-content')
  6. 后代元素选择器
    element = wd.find_element_by_css_selector('ul>[data-index="0"] .title-content-title')
  7. 按次序选择子元素
# li标签的第二个
element = wd.find_element_by_css_selector('.s-hotsearch-content>li:nth-child(2)')
# li标签类型的第二个
element = wd.find_element_by_css_selector('.s-hotsearch-content li:nth-of-type(2)')
# print(element.text)

# 偶数节点
elements = wd.find_elements_by_css_selector('.s-hotsearch-content li:nth-child(even)')
# 奇数节点
elements = wd.find_elements_by_css_selector('.s-hotsearch-content li:nth-of-type(odd)')
# 同时满足标签和class,即class为title-content-title的span
elements = wd.find_elements_by_css_selector('span.title-content-title')
# , 表示或  选择器中不能加括号  紧挨着写是与
elements = wd.find_elements_by_css_selector('.s-hotsearch-content > [data-index="0"] , .s-hotsearch-content > .even')
  1. 其它
# 属性以xxxx开头的元素
elements = wd.find_elements_by_css_selector('span[class^="title"]')

# 属性以xxxx结尾
elements = wd.find_elements_by_css_selector('span[class$="title"]')

# 属性包含xxxx
elements = wd.find_elements_by_css_selector('span[class*="content"]')
  1. 兄弟选择器
# 兄弟节点 .top-0后面紧跟的span
element = wd.find_element_by_css_selector('.top-0 + span')

# 兄弟节点 .top-0后面所有的span
elements = wd.find_elements_by_css_selector('.top-0 ~ span')
  • xpath
    注意:xpath下标从1开始
  1. 绝对路径定位元素
    elements = wd.find_elements_by_xpath('/html/body/div/div[1]/div[3]/a')
  2. 相对路径定位元素
# 直接子节点
titles = wd.find_elements_by_xpath('//div/ul/li/a/span[2]')
# 子节点
titles = wd.find_elements_by_xpath('.//div//li//span[2]')
# 通配符 ul中所有直接子节点
eles = wd.find_elements_by_xpath('//ul/*')

# driver.find_element_by_xpath('//*[contains(@text, "云课堂")]').click()
yunketang = driver.find_element_by_xpath('//*[@class="android.widget.HorizontalScrollView"]//android.widget.LinearLayout[3]')
yunketang.click()
  1. 按属性定位
btn = wd.find_element_by_xpath('//input[@value="百度一下"]')

btn = wd.find_element_by_xpath('//*[@id="su"]')

# class不能只写一个,要全写上
btn = wd.find_element_by_xpath('//*[@class="bg s_btn"]')

elements = wd.find_elements_by_xpath('//li[@class="hotsearch-item even"]')

# 有value属性的元素
elements = wd.find_elements_by_xpath('//*[@value]')
  1. 按次序定位
# ul中第一个li标签中的第二个span
span = wd.find_element_by_xpath('//ul/li[1]//span[2]')

# 最后一个span
last_span = wd.find_element_by_xpath('//ul/li[1]//span[last()]')
# 倒数第二个span
span = wd.find_element_by_xpath('//ul/li[1]//span[last() - 1]')
# 前两个
span_list = wd.find_elements_by_xpath('//ul/li[1]//span[position()<=2]')

# 选取class属性为hotsearch-item odd的第一个li标签中的前两个span
# e_list = wd.find_elements_by_xpath('//*[@class="hotsearch-item odd"][1]//span[position()<=2]')
  1. 路径与逻辑结合
span = wd.find_element_by_xpath('//li[@class="hotsearch-item odd" and @data-index="0"]//span[2]')

li_list = wd.find_elements_by_xpath('//li[@class="hotsearch-item odd" or @class="hotsearch-item even"]')
  1. 其它
# 文本内容是xxxx的元素 //*[text() = "xxxx"]
element = wd.find_element_by_xpath('//*[text() = "百度热榜"]')

# 属性中含有xxxx的元素 //*[contains(@attribute, "xxxx")]  移动端自动化测试用的比较多
element = wd.find_element_by_xpath('//*[contains(@href, "login")]')
driver.find_element_by_xpath('//*[contains(@text, "云课堂")]')

# 属性以xxxx开头的元素
element = wd.find_element_by_xpath('//*[starts-with(@href, "https://passport.baidu.com")]')
  1. 定位父节点
    在定位元素语句后加 /..
    driver.find_element_by_xpath('//*[contains(@text, "云课堂")]/..')

在Android中,只能找到屏幕中显示的控件,比如滑动才能显示的控件就找不到;
在iOS中,可以找到整个页面中所有控件,但是要操作的话,还是需要展现在屏幕上才可以。

相关文章

  • Selenium三种等待方式的使用

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

  • [AP_08] Appium元素定位01:id定位&检测元素存在

    目录结构 一、Appium元素定位概述 1. 元素定位 同Web自动化测试(如:Selenium+Python)类...

  • WebDriver元素定位策略

    软件自动化测试过程 软件自动化测试的基本对象即是页面元素,那么在进行自动化测试的第一步也就是定位页面元素,不管是W...

  • Selenium元素定位

    1.Selenium元素定位 1.1自动化测试基础 1.1.1分层的自动化测试 传统的自动化测试更关注产品UI层的...

  • Python自动化测试学习哪些知识?

    Python自动化测试学习哪些知识?先学习自动化测试基础,学习Appium操作,元素定位、操作、等待、滑动等,深入...

  • Appium常用定位方式

    前言 与Web自动化测试一样,app自动化测试过程中最重要一个环节就是元素定位,只有准确定位到了元素才能进行相关元...

  • Appium元素定位

    元素定位 app自动化测试最重要的一个环节是元素定位,只有准确定位到元素才能进行相关元素操作,如输入、点击、拖拽、...

  • WebUi自动化测试

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

  • UI自动化测试平台

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

  • python进阶 目录

    一、 web自动化测试(selenium) selenium元素定位陷阱规避 https://www.jiansh...

网友评论

      本文标题:自动化测试--定位元素

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