• selenium的基本定位方式总结


    Selenium提供了8种定位方式。
    • id
    • name
    • class name
    • tag name
    • link text
    • partial link text
    • xpath
    • css selector
    这8种定位方式在Python selenium中所对应的方法为:
    • 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()
     
    百度页面查看元素属性,页面如下
     
     
     
    通过id定位
    find_element_by_id("kw")
    find_element_by_id("su")
     
    通过name定位:
    find_element_by_id("wd")
     
    通过class name 定位
    find_element_by_class_name("s_ipt")
     
    通过tag name定位
    find_element_by_tag_name("input")
    可见仅仅通过标签名去定位时,一般一种标签在一个页面里面会出现不止一次甚至大量出现,这种定位方式的作用不是很大,所以用的也就比较少
     
    通过xpath定位
     
    绝对路径定位
    find_element_by_xpath("/html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input")
     
     
    find_element_by_xpath("//input[@id='kw']")
    find_element_by_xpath("//*[@name='wd']")
    其中的标签名input也可以用*来代替,而且只要是在该标签内,任意属性都可以,比如搜索框的maxlength属性:
    find_element_by_xpath("//input[@maxlength='255']")
     
    查找搜索框的时候发现其上级元素form又唯一的id方便定位,就可以先查找到form元素然后依次往下写路径
    find_element_by_xpath("//form[@id='form']/span/input")
     
    如果元素的单个属性无法确定其唯一性,可以用and连接多个属性去确定
    find_element_by_xpath("//input[@id='kw' and @name='wd']")
     
    通过css定位
     
    一般class是用.标记,id是用#标记,标签名直接写具体标签名就好
    find_element_by_css_selector("#su")
    find_element_by_css_selector(".s_ipt")
    find_element_by_css_selector("[name=wd]")
     
     
    css定位里面也可以通过属性或者组合方式定位:
    find_element_by_css_selector("input[autocomplete='off']")
    find_element_by_css_selector("span.bg.s_btn_wr>input#su")
    具体说一下百度一下那个按钮的组合定位方式,这样写的定位顺序是这样的,先定位到一个class名为bg s_btn_wr的span标签,在这个标签下面有一个id为su的input标签,这样就定位到了
     
    值得注意的是,在css里面下级标签元素用>连接,如果class里面有空格,空格用.进行连接。
     
     
    find_element_by_link_text()
    find_element_by_partial_link_text()
    这两种定位方式是专门用于定位超链接的,也就是对应html页面中的<a>标签,括号里传的值就是a标签中的超链接文字,两者的区别在于一个是完整的超链接文字,一个是可以只写部分超链接文字。
    比如点击百度首页中右上角的新闻超链接,可以这样去定位:
    driver.find_element_by_link_text("新闻").click()
    driver.find_element_by_partial_link_text("闻").click()
     
     
     

    elements复数定位

    在上面的例举的八中基本定位方式种,都有对应的复数形式,分别是下面:
    id复数定位find_elements_by_id()
    name复数定位find_elements_by_name()
    这些复数定位方式每次取到的都是具有相同类型属性的一组元素,所以返回的是一个list队列,我们也可以利用这个去定位单个的元素。比如百度首页种,右上角有新闻、视频、地图、贴吧等一些链接,我们通过f12查看源码可以发现,这些链接都有共同的class, class="mnav"。
    举个例子,比如定位排在第六个的学术,可以这样定位:driver.find_elements_by_class_name("mnav")[5].click()
     
  • 相关阅读:
    随堂练习
    随堂练习
    第六次安卓作业
    第五次安卓
    第四次安卓
    第二次安卓
    安卓作业
    第十八次上机
    第七周作业
    第六周作业
  • 原文地址:https://www.cnblogs.com/tuxiaomeng/p/9455388.html
Copyright © 2020-2023  润新知