一:元素定位
(1)id定位:
通过元素的ID属性值来进行元素定位 ,在html标准规范中 ID值是唯一的
定位方法:find_element(By.id,'id属性值')
例子:driver.find_element(By.id,'userA').send_keys('admin')
(2)name定位:
通过元素的name属性值为进行元素定位 name属性值 在HTML页面中,是可以重复的。
定位方法: find_element(By.NAME,'name属性值')
例子:driver.find_element(By.NAME,'userA').send_keys('admin')
(3)class_name定位:
通过元素的class属性值进行元素定位 class属性值是可重复的,class里面有多个值的情况下只能取一个值为属性值
定位方法:find_element(By.CLASS_NAME,'class属性值')
例子:driver.find_element(By.CLASS_NAME,'telA').send_keys(18512829605)
(4)tag_name定位:
通过元素的标签名称进行定位, 在同一个html页面当中,相同标签元素会有很多,如果有重复的元素,定位到的元素默认都是第一个元素
定位方法: find_element(By.TAG_NAME,'标签名称')
例子:driver.find_element(By.TAG_NAME,'input').send_keys('admin')
(5)link_text定位:
通过超链接的全部文本信息进行元素定位 ,主要用来定位a标签
定位方法:find_element(By.LINK_TEXT,'全部文本内容')
注意:link_text参数代表的是a标签的全部文本内容。
例子:driver.find_element(By.LINK_TEXT,'访问 新浪 网站').click()
(6)partail_link_text定位:
通过超链接的局部文本信息进行元素定位,主要用来定位a标签
定位方法:find_element(By.PARTIAL_LINK_TEXT,'局部文本内容')
注意:partial_link_text表示的是a标签 的局部文本内容
例子:driver.find_element(By.PARTIAL_LINK_TEXT,'访问').click()
(7)xpath定位:
xpath是用来在xml文件中进行元素定位的标记语言,html是一种特殊的xml,所以xpath也可以用在html中
定位方法: find_element(By.XPATH,"xpath") xpath为表达式
1.Xpath定位策略:
1.1路径定位:
绝对路径:表达式是以 /html开头,元素的层级之间是以 / 分 隔
相同层级的元素可以使用下标,下标是从1开始.
需要列出元素所经过的所有层级元素 , 工作当中, 一般不使用绝对路径
例子:driver.find_element(By.XPATH,'/html/body/div/fieldset/form/
p[1]/input').send_keys("admin")
1.2.相对路径:匹配任意层级的元素, 是以 //tag_name或者//* 开 头
也可以使用下标,下标是从1开始
例子:driver.find_element(By.XPATH,'//form/p[2]/input').send_keys('123456')
2.属性定位:
匹配任意层级的元素, 是以 //tag_name或者//* 开 头
//*[@attribute='value'] attribute表示的是元素的属性名,value表示的是元素对应属性值
如果使用class的属性进行元素定位,需要用到class里面所有的值
例子:driver.find_element(By.XPATH,"//*[@class='telA']").send_keys('18512829605')
3.属性与逻辑结合:
匹配任意层级的元素, 是以 //tag_name或者//* 开 头
//*[@attribute1='value1' and@attribute2='value2']
例子:driver.find_element(By.XPATH,"//*[@name='telA' and @id='telA']").send_keys('18512829605')
4.属性与层级结合:
匹配任意层级的元素, 是以 //tag_name或者//* 开 头
//p[@id='pa']/input
例子:driver.find_element(By.XPATH,"//p[@id='p1']/input").send_keys("admin")
5.XPATH扩展:
5.1://*[text() = 'value'] value表示的是要定位的元素的全部文本内容
要定位的元素中,attribute属性的属性值的文本内容是value
例子:driver.find_element(By.XPATH,"//*[text()='新浪']").click()
5.2://*[contains(@attribute,'value')] attribute表示的属性名称,value表示的是字符串
要定位的元素中,attribute属性的属性值包含了value的内容
例子:driver.find_element(By.XPATH,"//*[contains(@placeholder,'请输入用户名')]").send_keys("admin")
5.3://*[starts-with(@attribute,'value')] attribute表示的属性名称, value表示的是字符串
要定位的元素,attribute属性的属性值是以value开头
例子:driver.find_element(By.XPATH,"//*[starts-with(@name,'pass')]").send_keys("123456")
CSS定位:
(1)id选择器:表达式: #id
# 表示通过元素的ID属性进行元素选择 id 表示的的id属性的属性值
例子:driver.find_element(By.CSS_SELECTOR,'#userA').send_keys("admin")
(2)class选择器:表达式: .class
.表示通过元素的class属性进行元素选择,class表示的class属性的其中一个属性值
例子:driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18512829605")
(3)元素选择器:表达式: tag_name
就是通过元素标签名称来选择元素,不推荐使用
例子:driver.find_element(By.CSS_SELECTOR,'input').send_keys("admin")
(4)属性选择器:表达式:[attribute='value']
attribute 表示的是属性名称,value表示的是属性值,如果使用的是class属性,需要带上class的全部属性值
例子:driver.find_element(By.CSS_SELECTOR,"[id='userA']").send_keys("admin")
(5)层级选择器:
5.1:父子层级关系选择器:表达式: element1>element2
通过element1来找element2,并且element2是element1的直接子元素
例子:driver.find_element(By.CSS_SELECTOR,"#pa>#userA").send_keys("admin")
5.2:隔代层级关系选择器:表达式: element1 element2
通过element1来找element2, 并且element2是element1的后代元素
例子:driver.find_element(By.CSS_SELECTOR,"div #passwordA").send_keys("admin")
(6)CSS扩展:
6.1:input[type^='value'] input表示标签名称,type表示属性名称, value表示的文本内容
查找元素type属性值是以value开头的元素
例子:driver.find_element(By.CSS_SELECTOR,"input[name^='userA']").send_keys("admin")
6.2:input[type$='value'] input表示标签名称,type表示属性名称, value表示的文本内容
查找元素type属性值以value结尾的元素
例子:driver.find_element(By.CSS_SELECTOR,"input[name$='wordA']").send_keys("123456")
6.3:input[type*='value'] input表示标签名称,type表示属性名称, value表示的文本内容
查找元素type属性值包含value的元素
例子:driver.find_element(By.CSS_SELECTOR,"input[name*='elA']").send_keys("18512829605")
二、元素操作方法
1、.send_keys() # 输入方法
2、.click() # 点击方法
3、.clear() # 清空方法
#d导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
#实例化驱动对象
driver=webdriver.Chrome()
#打开浏览器
driver.get('file:///Users/hanpeng/Documents/%E5%AD%A6%E4%B9%A0/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B