Selenium常用元素定位方法汇总

目录

一、webdriver定位方法

1、xpath基本定位用法

2、xpath相对路径/绝对路径定位

3、xpath文本、模糊、逻辑定位


一、webdriver定位方法

1、id 定位

driver.find_element_by_id()

2、name定位

driver.find_element_by_name()

3、class定位

driver.find_element_by_class_name()

4、link定位-->精准定位

driver.find_element_by_link_text()

5、partial_link定位-->模糊定位

driver.find_element_by_partial_link_text()

6、tag_name定位-->标签名定位

找到页面上所有标签名为input的标签,返回一个列表

driver.find_elements_by_tag_name()

7、css选择器

driver.find_element_by_css_selector()

8、xpath定位

// 2个斜杠表示相对路径  *表示任意标签     

driver.find_element_by_xpath()

9、By方法

from selenium.webdriver.common.by import By

1)driver.find_element(By.XXX,’定位值’)

 XXX为上述八种定位方法名称,该方法元素值可以用元组格式定义,

适用于页面元素的批量管理。

2)driver.find_elements(By.XXX,’定位值’)

该方法会定位符合条件的所有元素,以列表格式返回

  • xpath定位方法详解

1、xpath基本定位用法

1) 使用属性值定位 

driver.find_element_by_xpath(‘//标签名[@属性名=“属性值”]’)

原则上只要是唯一值都可以使用

Eg:-- driver.find_element_by_xpath('//input[@id="loginUsername"]')

-- driver.find_element_by_xpath('//input[@class="form-control tecon required"]')

-- driver.find_element_by_xpath('//input[@placeholder="[email protected]"]')

2)使用多个属性值定位

-不同属性值可用逻辑运算符连接,如and、or

--driver.find_element_by_xpath(‘//标签名[@属性名1=“属性值1” and @属性名2=“属性值2”]’)

-也可以分开填写

--driver.find_element_by_xpath(‘//标签名[@属性名1=“属性值1”][ @属性名2=“属性值2”]’)
Eg:--driver.find_element_by_xpath('//input[@id="loginUsername" and @name="username"]')

--driver.find_element_by_xpath('//input[@id="loginUsername"][@name="username"]')

2、xpath相对路径/绝对路径定位

1)绝对路径

以 / 开头,根据标签名从根目录开始一级一级定位下来,例如定位ID输入框。

/html/body/div[2]/div/div/from/div[3]/input

2)相对路径

以 // 开头,需要定位的元素没有唯一属性值,但其父级、子级、兄弟级元素有唯一属性值的情况下可使用。

例如想定位ID输入框的父级元素,但其class属性与密码输入框父级相同,直接用class属性定位不是唯一值。就可以先定位ID输入框元素来逆向定位他的父级元素。

//input[@id="loginUsername"]/..

回到上级目录用 .. 表示,跟linux操作相同。

3、xpath文本、模糊、逻辑定位

1)文本定位

元素中含有文本且基本不会改变的元素可以直接使用文本定位

例如登录按钮定位值可表达为

//button[text()=”Login”]

2)模糊定位

在遇到动态属性值时可以使用,基于contains() 、starts-with()、ends-with()这三函数

1))contains() 包含xxx的属性值

//button[contains(@class,"btn")]

2))starts-with() 以xxx开头的属性值

//button[starts-with(@class,"btn")]

3))ends-with()以xxx结尾的属性值

//input[ends-with(@class,"btn-box")]

猜你喜欢

转载自blog.csdn.net/q_syh/article/details/131540043