Webdriver API(元素定位与操作)

Posted _HLP_huang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Webdriver API(元素定位与操作)相关的知识,希望对你有一定的参考价值。

Webdriver提供了8种元素定位方法:id、name、class name、tag name、link text、partial link text、xpath、css selector

一、以上8种元素定位,Webdriver提供两套写法

1. 用By定位元素:通过By来声明定位的方法,需引入By模块

find_element(By.ID,"kw")

find_element(By.NAME,"wd")

 

2. 直接定位

find_element_by_id("kw")

find_element_by_name("wd")

 

二、定位一组元素

定位一组元素一般用于以下场景:

批量操作元素,例如勾选所有的复选框

先获取一组元素,元素对象以列表形式返回,再从这组对象中过滤出需要操作的元素。例如定位出页面所有的checkbox,然后选择其中的一个进行操作

find_elements_by_id("kw")

find_elements_by_name("wd")

 1 #coding=utf-8 
 2 from selenium import webdriver 
 3 import os
 4 
 5 driver = webdriver.Firefox() 
 6 file_path = \'file:///\' + os.path.abspath(\'checkbox.html\') 
 7 driver.get(file_path)
 8 
 9 # 选择页面上所有的tag name为input的元素
10 inputs = driver.find_elements_by_tag_name(\'input\')
11 
12 #然后从中过滤出tpye为checkbox的元素,单击勾选
13 for i in inputs: 
14     if i.get_attribute(\'type\') == \'checkbox\': 
15         i.click()
16 
17 driver.quit()

 如何勾选一组元素中的某一个选项呢?

1 # 打印当前页面上type为checkbox的个数 
2 print len(checkboxes)
3 
4 # 把页面上最后1个checkbox的勾给去掉 
  driver.find_elements_by_css_selector(\'input[type=checkbox]\').pop().click()
5 # pop()或pop(-1) 默认获取一组元素中的最后一个 6 #pop(0) 默认获取一组元素中的第一个 7 #pop(1) 默认获取一组元素中的第二个 8 #。。。。

 

三、8种元素定位

1. id定位

HTML规定id属性在HTML文档必须是唯一的。

find_element_by_id("kw")

 

 

2. name定位

name的属性值在HTML页面种可以不是唯一的。

find_element_by_name("wd")

 

 

3. class定位

通过class属性值来定位元素:

find_element_by_class_name("bg s_btn")

 

 

4. tag定位

通过<div>、<input>、<a>等tag来定位元素:

find_element_by_tag_name("input")

 

 

5. link定位

专门用来定位文本链接,通过链接文本的内容来定位元素:

find_element_by_link_text("百度新闻")

 

 

6. partial link定位

对link定位的一种补充,有些文本链接比较长,这个时候取文本的部分信息来定位元素(条件是能唯一标识这个链接)

find_element_by_partial_link_text("[百]度新[闻]")

 

 

7. xpath定位

xpath是一种在XML文档种定位元素的语言,因为HTML页可看作XML的一种实现。xpath定位方法实现基本可以到99%

策略:

  (1)绝对路径定位(不建议,因对页面的应变性太差)

  (2)利用元素属性定位(元素的任意属性都可以,只要是唯一)

    find_element_by_xpath("//input[@id=\'kw\']")

    find_element_by_xpath("//*[@maxlength=\'100\']")

  (3)属性与层级结合

    find_element_by_xpath("//span[@class=\'bg s_ipt_wr\']/input[2]")

  (4)使用逻辑运算符

    find_element_by_xpath("//input[@id=\'kw\' and @class=\'su\']")

 

 

8. CSS定位

CSS是一种语言,它用来描述HTML和XML文档的表现。CSS使用选择器来为页面元素绑定属性。一般情况下定位速度要比xpath快,且定位成功率99%

验证方法:使用网站自带的Jquery库可以定位css选择器,$就是jQuery的别称,是jQuery库提供的一个函数。

 

1、可以通过$ () 里的参数进行查找和选择html文档中的元素

 

如:

 
$(\'#tmp\');//这是查找dom的id等于tmp的元素

 

 

方法:在浏览器的console里输入:$(\'\')             例:输入$(\'.bg s_btn\')便可验证元素是否被定位到

 

  定位策略:

  (1)通过class属性定位:

    find_element_by_css_selector(".bg s_btn")

  (2)通过id属性定位:

    find_element_by_css_selector("#kw")

  (3)通过任意属性定位:

    find_element_by_css_selector("[autocomplete=\'off\']")

  (4)组合定位:

    find_element_by_css_selector("span.bg s_btn>input#su")

 

 

以上是关于Webdriver API(元素定位与操作)的主要内容,如果未能解决你的问题,请参考以下文章

自动化测试第三弹:WebDriver API之常见元素定位方法

selenium2-webdriver的API与定位元素

第 4 章 WebDriver API

WebDriver API 元素定位

web自动化:selenium原理和元素定位

WebDriver API__1.定位元素方法总览