一、元素定位
1. 如何进行元素定位?
元素定位就是通过元素的信息或元素层级结构来定位元素的
2.定位工具
浏览器开发者工具
3.元素定位方式
Selenium提供了八种定位元素方式
- id
- name
- class_name(使用元素的class属性定位)
- tag_name(标签名 <标签名 ..../>)
- link_text(定位超链接a标签)
- partial_link_text(定位超链接 a标签 模糊)
- xpath(基于元素路径)
- css(元素选择器)
3.1 id定位
说明:id定位就是通过元素的id属性来定位元素,HTML规定id属性在整个HTML文档中必须是唯一的
前提:元素有id属性
id一般情况下在当前页面中是唯一的
id定位方法
element = driver.find_element_by_id(id)
案例
需求:打开一个注册页 ,完成以下操作
- 使用id定位,输入用户名
- 使用id定位,输入密码
- 3秒后关闭浏览器窗口
案例解析:
# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器对象
driver = webdriver.Chrome()
# 打开URL
# 注意:\反斜杠在python中是转义字符 r:修饰的字符串,如果字符串中有转义字符,不进行转义使用
url = 'http://confluence.huisaas.com/'
driver.get(url)
# 查找用户名元素
username = driver.find_element_by_id('os_username')
# 查找密码元素
password = driver.find_element_by_id('os_password')
# 用户名输入
username.send_keys('admin')
# 密码输入
password.send_keys('123456')
# 暂停3秒
sleep(3)
# 退出浏览器驱动
driver.quit()
3.2 name定位
说明:name定位就是根据元素name属性来定位。HTML文档中name的属性值是可以重复的
前提:元素有name属性
name定位方法
element = driver.find_element_by_name(name)
3.3 class_name定位
说明:class_name定位就是根据元素class属性值来定位元素。HTML通过使用class来定义元素的样式
前提:元素有class属性
注意:如果class有多个属性值,只能使用其中一个
class_name定位方法
element = driver.find_element_by_class_name(class_name)
3.4 tag_name定位
说明:tag_name定位就是通过标签名来定位
HTML本职就是由不同的tag组成,每一种标签一般在页面中会存在多个,所以不方便进行精准定位,一般很少使用
tag_name定位方法
element = driver.find_element_by_tag_name(tag_name)
# 如果存在多个相同标签,则返回符合条件的第一个标签
案列
需求:打开一个注册页 ,完成以下操作
- 使用tag_name定位,输入用户名
注意:页面中如果存在多个相同的标签名,默认返回第一个标签
案列解析
from selenium import webdriver
from time import sleep
# 获取浏览器对象
driver = webdriver.Chrome()
# 打开URL
url = 'http://confluence.huisaas.com/'
driver.get(url)
# 查找用户名元素,输入用户名
driver.find_element_by_tag_name('imput').send_keys('admin')
# 暂停3秒
sleep(3)
# 退出浏览器驱动
driver.quit()
3.5 link_text定位
说明:link_text定位是专门用来定位超链接元素(标签< /a>),并且是通过超链接的文本内容来定位元素