zoukankan      html  css  js  c++  java
  • WebDriver元素定位方法

    python语言中对应8种方法:

    id                                     --->    name
    class  name                            --->    tag   name
    link text                              --->    partial link text
    xpath                                  --->   css selector
    find_element_by_id()                   --->   find_element_by_name()
    find_element_by_class_name()           --->   find_element_by_tag_name()
    find_element_by_link_text() ---> find_element_by_partial_link_text()
    find_element_by_xpath() ---> find_element_by_css_selector()

    1.id定位:

    find_element_by_id("kw") 

    2.name定位

    find_element_by_name("wd")

    3.class定位

    find_element_by_class_name("s_ipt")
    find_element_by_class_name("bg s_btn")
    通过class属性来定位元素

    4.tag定位

    很难通过标tag name去区分不同的元素
    find_element_by_tag_name("input")

    5.link定位

    专门用来定位文本链接
    例如:
    <a  class="mnav"  name="tj_trnews" href="http://news.baidu.com">新闻</a>
    
    find_element_by_link_text("新闻")

    6.partial link定位

    partial link定位是对link定位的一种补充,当文本很长时,可以取文本的一部分定位,只要这部分能够唯一标识这个链接
    
    find_element_by_partial_link_text("文本链接")

    7.XPath定位

    7.1绝对路径定位

    find_element_by_xpath("/html/body/div/div[2]/div/div/div/form/span/input")
    find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span[2]/input")

    7.2利用元素属性定位

    find_element_by_xpath("//input[@id='kw']")
    find_element_by_xpath("//input[@id='su']")
    //表示当前页面某个目录下,input表示定位元素的标签页
    [@id='kw']表示这个元素的id属性值等于kw

    通过name和属性值来定位
    find_element_by_xpath("//input[@name='wd']")
    find_element_by_xpath("//input[@class='s_ipt']")
    find_elemnt_by_xpath("*[@class='bg s_btn']")

    不想指定标签名,则可以用星号(*)代替 使用XPath不局限于id、name和class这三个属性值,元素的任意属性值都可以使用,只要它能唯一的标识一个元素
    find_element_by_xpath("//input[@maxlength='100']")
    find_element_by_xpath("//input[@autocomplete='off']")
    find_element_by_xpath("//input[@type='submit']")

    7.3层级与属性结合

    find_element_by_xpath("//span[@class='bg_s_ipt_wr']/input")
    span[@class='bg s_ipt_wr']通过class属性定位到父元素,后面/input就表示父元素下面的子元素。若父元素没有可以利用的属性值,那么可以继续向上查找“爷爷”元素

    find_element_by_xpath("//form[@id='form']/span/input")
    find_element_by_xpath("//form[@id='form']/span[2]/input")
    通过一级一级的向上查找,直到找到最外层的<html>标签,这样就是一个决定路径的写法了

    7.4使用逻辑运算符

    一个属性无法区分一个元素时,可以使用逻辑运算符连接多个属性来查找元素
    <input id="kw" class="su" name="ie">
    <input id="kw" class="aa" name="ie">
    <input id="bb" class="su"  name="ie">
    定位第一行元素
    find_element_by_xpath("//input[@id='kw' and @class='su']/span/input") 

    8.CSS定位

     css使用选择器来为页面元素绑定属性,定位速度比XPath快

    CSS选择器的常见语法

    选择器                          例子                                        描述
    .class                        .intro                            class选择器,选择class="intro"的所有元素
    #id                           #firstname                        id选择器,选择id="firstname"所有元素
    *                             *                                 选择所有元素
    element                       p                                 元素所有<p>元素
    element>element               div>input                         选择父元素为<div>的所有<input>元素
    element+element               div+input                         选择同一级中紧接着在<div>元素之后的所有<input>元素
    [attribute=value]             [target=_blank]                   选择target="_blank"的所有元素

     8.1通过class属性定位

    find_element_by_css_selector(".s_ipt")
    
    find_element_by_css_selector(".bg s_btn")

    find_element_by_css_selector()方法用于CSS语言定位元素,点号(.)表示通过class属性来定位元素

    8.2通过id属性定位

    find_element_by_css_selector("#kw")
    find_element_by_css_selector("#su")
    #表示通过id属性来定位元素

     8.3通过标签名定位

    find_element_by_css_selector("input")
    通过此种方式很难找到想要的元素
    1)通过父子关系定位
    find_element_by_css_selector("span>input")
    2)通过属性定位:
    find_element_by_css_selector("[autocomplete=off]")
    find_element_by_css_selector("[name='kw']")
    find_element_by_css_selector('[type="submit"]')
    3)组合定位
    find_element_by_css_selector("span.bg s_ipt_wr>input.s_ipt")
    find_element_by_css_selector("span.bg s_btn_wr>input#su")
    有一个父元素标签名叫span;
    它有一个class属性值叫bg s_ipt_wr;
    它有一个子元素,标签名叫input
    这个子元素的class属性值叫s_ipt
     
                                 XPath与CSS的类似功能对比
    定位方式              Xpath                                           CSS
      标签              //div                                              div
     By id             //div[@id='eleid']                               div#eleid
     By  class         //div[@class='eleclass']                        div.eleid 
    
     By 属性           //div[@title='Move mouse here']                      div[title=Move mouse here]
                                                                              div[title^=Move]
                                                                              div[title$=here]
                                                                              div[title*=mouse]
    
     定位子元素        //div[@id='eleid']/*                                div#eleid>*
                      //div/h1                                            div>h1
  • 相关阅读:
    plan
    模拟测试6
    codeforces gym100801 Problem J. Journey to the “The World’s Start”
    HDU6333 莫队+组合数学
    codeforces 1167B Lost Numbers
    codeforces 86D,Powerful array 莫队
    codeforces 220B . Little Elephant and Array 莫队+离散化
    SPOJ DQUERY
    poj/OpenJ_Bailian
    codeforces 540E 离散化技巧+线段树/树状数组求逆序对
  • 原文地址:https://www.cnblogs.com/xubc/p/5210446.html
Copyright © 2011-2022 走看看