UI自动化要做的就是模拟鼠标和键盘对元素进行操作,单击、输入或鼠标悬停等操作,所有的这些操作都建立在找到元素的基础上,下面说一下,selenium的八大元素定位,重点说一下xpath元素定位。

UI自动化之——selenium元素定位

二、selenium的八大元素定位

UI自动化之——selenium元素定位

 

 以百度的输入框元素为例子:

2.1 id定位

find_element_by_id("kw") # 通过id属性来定位元素

 

2.2 name定位

find_element_by_name("wd") # 通过name 属性来定位元素

 

2.3 class定位

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

 

2.4 tag定位

#根据标签名称来定位使用较少基本不用同一个标签重复太多
find_element_by_tag_name("input") # 通过表tag name定位元素

 

UI自动化之——selenium元素定位

 

 以百度首页的【登录】为例子

2.5 link定位

# 根据文本名称定位确定只有这一个文本不然会报错
find_element_by_link_text("登录") # 通过元素标签之间的文本信息来定位元素

 

2.6 partial link定位

#根据模糊匹配匹配文本定位
find_element_partial_by_link_text() # 通过元素标签对之间的部分文本信息来定位元素

 

2.7 xpath定位

xpath时一种XML文档中定位元素的语言,因为HTML可以看做XML的一种实现,所以selenium用户可以使用这种强大的语言在web应用中定位元素。

find_element_by_xpath("//*[@id='kw']") # 通过xpath路径进行定位元素

 

2.8 CSS定位

CSS(Cascading Style Sheets)是一种语言,他用来描述HTML和XML文档的表现。CCS使用选择器来为页面绑定元素,这些选择器可以使用被selenium用作另外的定位策略。

find_element_by_css_selector("input#kw") # 通过ccs选择器来定位元素

CCS选择器的常用语法:

选择器 例子 描述

.class

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

 

 

 

 

 

 

 

 

 

 

 

定位页面如下:

UI自动化之——selenium元素定位

 

 如图:使用CSS进行元素定位

# 演示代码如下

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(20)

# 元素定位测试
# 以百度搜索输入框元素为例
driver.get(r"http://www.baidu.com/")

# 元素ID定位
# driver.find_element_by_id('kw').send_keys("丰巢科技")

# 元素name属性定位
# driver.find_element_by_name('wd').send_keys("丰巢科技")

# 元素class属性定位
# driver.find_element_by_class_name("s_ipt").send_keys("丰巢科技")

# 元素的tag名称定位,这个不常用,无法唯一定位
# driver.find_element_by_tag_name('input').send_keys("丰巢科技")

# link定位
# driver.find_element_by_link_text("登录").click()

# partial link定位
# driver.find_element_by_partial_link_text("录").click()

# xpath定位
# driver.find_element_by_xpath('//input[@)


# ccs进行元素定位
# driver.find_element_by_css_selector('input#kw').send_keys("丰巢科技")

time.sleep(5)
driver.close()
View Code

相关文章: