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

自动化测试--定位元素

作者: 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中,可以找到整个页面中所有控件,但是要操作的话,还是需要展现在屏幕上才可以。

    相关文章

      网友评论

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

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