selenium的元素定位

  针对元素有哪些常见的简单操作:

    1、点击

    2、输入内容、清除内容

    3、返回元素尺寸、坐标

    4、获取元素标签文本

    5、获取元素属性值

    6、检查元素:是否可见、是否可点击、是否已被选择

    7、表单提交

 

  针对元素进行简单的操作之前,要先定位元素,如下为几种元素定位方法:

    1、ID 定位

      find_element_by_id()

    2、name 定位

      find_element_by_name()

    3、class name 定位

      find_element_by_class_name()

    4、tag name 定位

      find_element_by_tag_name()

    5、link_text 定位

      find_element_by_link_text()

    6、partial_link_text定位

      find_element_by_partial_link_text()

 

    7、xpath 定位

      find_element_by_xpath()

      1)绝对路径定位

        使用标签名的层级关系来定位元素的绝对路径,从最外层的 html 到 body 到 div ...,这样一级一级往下找;如果同一个层级中有多个相同的标签名,就按上下顺序来确定是第几个,如:/html/body/div/div[2]/form,div[2]表示当前层级下的第二个div标签

      2)利用元素属性定位

        使用相对路径定位 + 元素的属性值定位,xpath定位不局限于id,class, name属性值,还有其它的能唯一标识的元素,如:

        find_element_by_xpath( ‘//input[@id='kw']’ )

        find_element_by_xpath(‘//*[@name='wd]’)

        find_element_by_xpath('//input[@type='submit]')    # type属性值是可以唯一标识的,故可用于定位

      3)层级与属性结合

        当一个元素本身没有可以唯一标识的属性值,可以查询上一级元素

        find_element_by_xpath(‘//form[@id='form]/input’)

      4)使用逻辑运算符

        使用逻辑运算符连接多个属性来确定唯一标识元素

        find_element_by_xpath(‘//input[@id='kw' and @class='s_ipt]’)

      5)使用contains方法

        contains()方法是匹配一个属性中包含的字符串,如:

        find_element_by_xpath(‘//span[contains(@class,'s_ipt)]’)

        find_element_by_xpath('//span[contains(text(), '新闻')]')

      6)使用text()方法

        find_element_by_xpath(‘//a[text(),''新闻]’)

    

    7、css 定位

      find_element_by_css_selector()

      CSS是一种语言,用来描述HTML和XML文档的表现。CSS使用选择器为页面元素绑定属性,CSS定位速度比XPATH定位速度快,因为css是xml文档,xpath是HTML文档,以下为css选择器常见语法:

      

 

 

      1)通过class定位

        find_element_by_css_selector('.class')

      2)通过id定位

        find_element_by_css_selector(‘#id’)

      3)通过标签名定位

        find_element_by_css_selector(‘input’)

      4)通过标签层级关系定位

        find_element_by_css_selector(‘input>span’)

      5)通过属性定位

        find_element_by_css_selector(‘[name='kw']’)

      6)通过组合定位

        把以上的几种定位方法组合起来应用,就更容易定位到元素的唯一性

        find_element_by_css_selector(‘form.fm > span > input#kw’)

      7)其它定位方法

        查找class属性包含‘s_ipt_wr’字符串的元素

        find_element_by_css_selector(‘[class*=s_ipt_wr]’)

        查找class属性以‘bg’开头的元素

        find_element_by_css_selector(‘class^='bg'’)

        查找class属性以‘warp’字符串结尾的元素

        find_element_by_css_selector(‘class$='warp'’)

        查找from标签下面第2个input标签的元素

        find_element_by_css_selector(‘form > input:nth-child(2)’)

     8)更多的css定位方法可以查看W3CSchool网站中的css选择器参考手册((http://www.w3school.com.cn/cssref/css_selectors.asp)

   

  By定位元素

    除了前面的8大元素定位方法之外,WebDriver还提供了另外一种写法,即统一调用find_element()方法,通过By来声明定位,并且传入对应定位方法的定位参数

    find_element(By.ID, 'kw')

    find_element(By.NAME, 'wd')

    find_element(By.CLASS_NAME, 's_ipt')

    find_element(By.TAG_NAME, 'input')

    find_element(By.LINK_TEXT, '新闻')

    find_element(By.PARTIAL_LINK_TEXT, '新')

    find_element(By.XPATH, '//a[@class='bg_s_btn']')

    find_element(By.CSS_SELECTOR, '#su')

 

    

 

posted @ 2021-12-03 18:20  哩子吖  阅读(311)  评论(0)    收藏  举报