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

自动化测试元素定位之Xpath

作者: 钓小鱼的猫 | 来源:发表于2020-12-13 19:09 被阅读0次

    背景

    最近公司项目采用vue末班生成框架,导致元素属性是动态变化的,在一般情况下,我们通过简单的xpath即可定位到目标元素,但对于一些既没id又没name,而且其他属性都是动态的情况就很难通过简单的方式进行定位了。
    在这种情况下,我们需要使用xpath1.0内置的函数来进行定位

    常用函数

    contains

    XPath常用的text()、and、or、not、contains,当然也还有类似的position、last、ends_with、starts_with等等。
    ps:实践过程中:ends-with并未起作用,查询资料是由于xpath1.0和xpath2.0的区分

    (//div[not(contains(@class,'day-disabled')) and(@class='calendar-day')]/div[text()=7])[1]
    

    以上xpath:采用过滤的方式筛选出合适的元素路径,后通过元素下标定位

    浏览器调试

    image.png

    下标操作

    可以在console下使用$x()方法验证查找的元素


    image.png
    ("//input[@class='btn self-btn bg s_btn']")[1]
    

    sibling函数

    通过sibling函数我们可以提取指定元素的所有同级元素,即获取目标元素的所有兄弟节点。

    例如通过刚才“新闻”节点来定位“hao123”节点。

    "//div/following-sibling::a[contains(text(), 新闻)]"
    python selenium代码片段为如下

    driver.find_element_by_xpath(
    u"//div/a[contains(text(), '%s')]/following-sibling::*" % u"新闻")
    通过刚才“新闻”节点来定位其所有的兄弟节点。

    python selenium代码片段如下(注意这里用的是find_==elements==_by_xpath):

    driver.find_elements_by_xpath(
    u"//div/a[contains(text(), '%s')]/following-sibling::*" % u"新闻")
    下面我们看一个完整的代码示例:

    #_*_ coding:utf-8 _*_
    
    __author__ = '啦啦啦'
    
    from selenium import webdriver
    
    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")
    
    
    if __name__ == '__main__':
    
        driver = webdriver.Ie()
    
        driver.get(u"http://www.baidu.com")
    
        # 定位 通过contains 定位包含“新闻”的元素
        new_node = driver.find_element_by_xpath(
        u"//div/a[contains(text(), '%s')]" % u"新闻")
        print new_node.text
    
        # 定位 “新闻”元素的兄弟节点“hao123”
        hao123_node = driver.find_element_by_xpath(
        u"//div/a[contains(text(), '%s')]/following-sibling::*" % u"新闻")
        print hao123_node.text
    
        # 定位 “新闻”元素的所有兄弟节点
        all_node = driver.find_elements_by_xpath(
        u"//div/a[contains(text(), '%s')]/following-sibling::*" % u"新闻")
        for ee in all_node:
            print ee.text
    
        driver.quit()
    

    xpath常用函数

    child 选取当前节点的所有子节点
    parent 选取当前节点的父节点
    descendant 选取当前节点的所有后代节点
    ancestor 选取当前节点的所有先辈节点
    descendant-or-self 选取当前节点的所有后代节点及当前节点本身
    ancestor-or-self 选取当前节点所有先辈节点及当前节点本身
    preceding-sibling 选取当前节点之前的所有同级节点
    following-sibling 选取当前节点之后的所有同级节点
    preceding 选取当前节点的开始标签之前的所有节点
    following 选去当前节点的开始标签之后的所有节点
    self 选取当前节点
    attribute 选取当前节点的所有属性
    namespace 选取当前节点的所有命名空间节点

    相关文章

      网友评论

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

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