目录
1.id属性
- 说明:就是通过元素的id属性来定位元素,html规定id属性在整个html文档中必须唯一的
- 前提:元素有id属性
- 方法:element = driver.find_element(By.ID,"值")
2.name属性
- 说明:就是通过元素的name属性来定位元素,在html文档中name属性是可以重复的
- 前提:元素有name属性
- 方法:element = driver.find_element(By.NAME,"值")
3.class_name属性
- 说明:就是通过元素的class属性值来定位元素,html通过使用class来定义元素的样式
- 前提:元素有class属性
- 注意:如果class有多个属性值,只能使用其中一个
- 方法:element = driver.find_element(By.CLASS_NAME,"值")
4.tag_name标签名
- 说明:通过标签名来定位
- 注意:html本质就是由不同的tag组成,每一种标签一般在页面中会存在多个,所以不方便进行精准定位,一般很少使用
- 方法:element = driver.find_element(By.TAG_NAME,"值")
5.link_text超链接文本内容
- 说明:是专门用来定位超链接元素(<a>内容...</a>),并且是通过超链接的文本内容来定位元素
- 方法:element = driver.find_element(By.LINK_TEXT,"超链接的全部文本内容")
6.partial_link_text局部超链接文本内容
- 说明:通过局部链接的文本定位,link_text使用全部文本内容匹配元素,partial_link_text可以使用局部文本内容来匹配元素,也可以使用全部文本内容匹配元素
- 方法:element = driver.find_element(By.PARTIAL_LINK_TEXT,"超链接的部分文本内容")
7.XPath
方法:driver.find_element(By.XPATH,"值")
1、路径
绝对路径:从最外层元素到指定元素之间所有经过元素层级的路径
绝对路径以/html根节点开始,使用/来分隔层级
eg:/html/body/div/fieldset/p[1]/input
#绝对路径对页面结构要求比较严格,不建议使用
相对路径:匹配任意层级的元素,不限制元素的位置
相对路径//开始 //input(标签名) 或者 //*(查找所有标签)
以百度为例:
绝对路径
相对路径
借助谷歌浏览器如何获取xpath路径
1.元素上右键->检查 2.在F12对应的文档中的对应元素上右键->Copy->Copy XPath或者Copy full XPath
2、元素属性
通过使用元素的属性信息来定位元素
格式://input[@id = 'usera']或者//*[@id = 'usera']
3、属性和逻辑结合
解决元素之间存在相同属性值的问题
格式://*[@name='xxx'] and [@class='yyy']
4、层级与属性结合
如果通过元素自身的属性不方便直接定位该元素,则可以先定位到其父元素,然后再找到该元素
格式://*[@id = 'p1']/input
5、使用函数
//*[text()='xxx'] 文本内容是xxx的元素 //*[contains(@attribute,'xxx')] 属性中含有xxx值的元素 //*[starts-with(@attribute,'xxx')] 属性以xxx开头的元素
以百度为例:
8.CSS
方法:driver.find_element(By.CSS_SELECTOR,"值")
1、id选择器
- 说明:根据元素id属性来选择
- 格式:#id属性值
2、class选择器
- 说明:根据元素class属性来选择
- 格式:.class属性值
3、元素选择器
- 说明:根据元素的标签名选择
- 格式:标签名
4、属性选择器
- 说明:根据元素的属性名和值来选择
- 格式:[属性名='value']
5、层级选择器
- 说明:根据元素的父子关系来选择的
- 格式1:element1>element2
通过element1来定位element2,并且element2必须为element1的直接子元素
- 例如:p[id='p1']>input
定位指定p元素下的直接子元素input- 格式2:element1 element1(空格隔开)
通过element1来定位element2,并且element2为element1的后代
- 例如:p[id='p1'] input
6、css扩展
- input[type^='p']
type属性以p字母开头的元素- input[type$='d']
type属性以d字母结束的元素- input[type*='w']
type属性包含w字母的元素
补充:
当我们需要定位一组元素时,方法如下:
- elements=driver.find_elements("xxx")
- 作用
- 1.查找定位符合条件的所有元素
- 2.返回值是一个列表
- 说明: 列表数据格式的读取需要指定下标(下标从0开始)