• selenium之Xpath定位


    1. 绝对定位:

    driver.find_element_by_xpath("/html/body/div[x]/form/input") x 代表第x个 div标签,注意,索引从1开始而不是0

    2.相对路径:

    driver.find_element_by_xpath("//input[x]") 定位第x个input标签,[x]可以省略,默认为第一个

    3.标签属性定位: 

    driver.find_element_by_xpath("//a[@href='/industryMall/hall/industryIndex.ht']")
    driver.find_element_by_xpath("//input[@value='确定']")
    driver.find_element_by_xpath("//div[@class = 'submit']/input")
    driver.find_element_by_xpath("//input[@type='name' and @name='kw1']")

    driver.find_element_by_xpath("//标签[contains(text(),'文本值')]") 

    driver.find_element_by_xpath("//input[contains(text(),'型号')]")    

    driver.find_element_by_xpath(“//a[contains(@href, ‘logout’)]”)  

    a.starts-with      例子: input[starts-with(@id,'ctrl')]                  解析:匹配以ctrl开始的属性值

    b.ends-with        例子:input[ends-with(@id,'_userName')]     解析:匹配以userName结尾的属性值   好像不行,经常报错,不推荐

    c.contains()        例子:Input[contains(@id,'userName')]         解析:匹配含有userName属性值

    driver.find_element_by_xpath("//input[@id='kw1']//input[start-with(@id,'nice']/div[1]/form[3])  如果上面的单一方法不能完成定位,也可以采取组合式定位

    4.Xpath轴方式定位元素 

         1、child  选取当前节点的所有子元素

               driver.find_element_by_xpath("//div[@id='B']/child::div")

         2、parent  选取当前节点的父节点

               driver.find_element_by_xpath("//div[@id='C']/parent::*/parent::div")

               driver.find_element_by_xpath("//div[@id='C']/..")   后面两点也代表上一级的父节点

         3、descendant选取当前节点的所有后代元素(子、孙等)

               "//form[@id='form']/descendant::input[@id='su']"

         4、ancestor  选取当前节点的所有先辈(父、祖父等)

              //*[@id='%s']/ancestor::td/preceding-sibling::td[1]

         5、preceding-sibling选取当前节点之前的所有同级节点

              driver.find_element_by_xpath("//div[@id='D']/preceding-sibling::div[1]").text

         6、following-sibling选取当前节点之后的所有同级节点

               driver.find_element_by_xpath("//td[contains(text(),’17051915200001’)]/following-sibling::td[8]/a[@class='link']")

         7、preceding   选取文档中当前节点的开始标签之前的所有节点

               //p[text()='出售方信息']/preceding::div[contains(text(),'拟定网签价')]

         8、following   选取文档中当前节点的结束标签之后的所有节点

              //td[@width='50%']/following::div[contains(text(),'行政区域')]

  • 相关阅读:
    DELL(linux 系统里系统掉盘)(阵列Foreign)命令行里重做阵列
    MegaCli 管理raid
    Linux下DNS服务器
    Linux 系统用户密码长度以及复杂度进行限制 PAM
    Linux 用户密码有效期
    Linux服务器系统安全
    整理sql数据
    简单的shell脚本-程序启停
    spring 获取bean的方法
    git 使用squid设置http代理
  • 原文地址:https://www.cnblogs.com/brianlai/p/10146423.html
Copyright © 2020-2023  润新知