• selenium的xpath定位


    绝对路径:

    Xpath的绝对路径使用单斜线 "/"

    元素是上一节点的子节点中的一个,不能跳级,查找到的元素紧挨着上面一个元素

    相对路径:

    Xpath的相对路径用 "//"

    下级任何子节点或者任何嵌套元素子节点中的一个,可跳级,在啊HTML节点下任何位置查找元素 

    一、xpath可以通过元素的 id name class 这些属性来定位

    1、用id属性定位 

    driver.find_element_by_xpath("//tag_name[@id='kw']").send_keys(u"python语言")   

    # 注意引号的搭配使用,键盘输入中文时,由于脚本使用的是utf-8,windows使用的是ASCII码,使用在输入前加个 “u”

    2、用name属性定位 

    driver.find_element_by_xpath("//tag_name[@name='wd']").send_keys(u"python语言")   

    3、用class属性定位 

    driver.find_element_by_xpath("//tag_name[@class='s_ipt']").send_keys(u"python语言")   

    二、 xpath层级

    1、如果一个元素的属性不是很明显,无法直接定位到,这时候可以找它老爸(元素)

    2、找到它老爸后,再找下一个层级就能定位到了

    <form id="form">

    <span id ="s_kw_wrap">

    <input id="kw">

    如上代码,要定位的是 input标签,通过层级关系定位 input 标签

    driver.find_element_by_xpath("//span[@id='s_kw_wrap']/input").send_keys("python") 

    driver.find_element_by_xpath("//form[@id='form']/span/input").send_keys("python") 
     

    三、xpath的索引 

    如果一个元素他的兄弟元素跟它的标签一样,无法通过层级定位到,可以通过索引来定位 (索引从1开始算)

    <select id="nr" name="NR">

    <option selected="" value="10">每页显示10条</option>

    <option value="20">每页显示20条</option>

    <option value="50">每页显示50条</option>

    </selected>

    driver.find_element_by_xpath("//select[@id='nr']/option[1]")  # 定位 每夜显示10条的元素

    driver.find_element_by_xpath("//select[@id='nr']/option[2]")  # 定位 每夜显示20条的元素
      driver.find_element_by_xpath("//select[@id='nr']/option[3]")  # 定位 每夜显示50条的元素

     四、xpath的逻辑运算

    1、xpath可以多个属性逻辑运算,可以支持and(与)、or(或)、not(非) 

    2、一般用的比较多的是 and 运算,同时满足两个属性

    driver.find_element_by_xpath("//select[@id='nr' and @name='NR']")
     

    五、xpath的模糊匹配

    1、模糊匹配功能 

    driver.find_element_by_xpath("//tag_name[contains(text(),'hao123')]").click()

    2、模糊匹配某个属性

    driver.find_element_by_xpath("//tag_name[contains(@id,'kw')]").click()

    3、模糊匹配以什么开头

    driver.find_element_by_xpath("//tag_name[starts-with(@id,'s_kw_wrap')]").click()
     

    4、模糊匹配以什么结尾

    driver.find_element_by_xpath("//tag_name[ends-with(@id,'s_kw_wrap')]").click()

    5、正则表达式

    driver.find_element_by_xpath("//tag_name[matchs(text(),'hao123')]").click()

     

  • 相关阅读:
    确定机器上装有哪些.net framework版本
    C#中的私有构造函数
    突破vs2008 RTM90天使用限制(转)
    圣诞晚会串词(转)
    C#中ref和out
    登缙云山随笔
    质量百分百
    自然界五种长有人脸像的怪异生物
    C# 静态构造函数
    NET环境下基于Ajax的MVC方案
  • 原文地址:https://www.cnblogs.com/DeryKong/p/10664147.html
Copyright © 2020-2023  润新知