1.元素定位
1.1id属性定位
-
语法
-
driver.find_element_by_id("id属性值")
-
-
用法
-
只有当需要定位的元素有id属性的时候才能够使用(id动态,也不能使用
排错 1 AttributeError: 'list' object has no attribute 'get_attribute' 定位元素返回的列表格式 原因:使用复数定位方式 find_elements 2 NoSuchElementException 表示元素没找到 元素定位方式出现问题--属性值写错
-
1.2name属性定位
-
语法
-
driver.find_element_by_name("name属性值")
-
-
用法
-
只有当需要定位的元素有name属性的时候才能够使用(name动态,也不能使用)
-
1.3class属性定位
-
语法
-
driver.find_element_by_class_name("class属性值")
-
-
用法
-
只有当需要定位的元素有class属性的时候才能够使用
-
1.4tag标签定位
-
语法
-
driver.find_element_by_tag_name("标签名")
-
-
用法
-
当页面中有唯一的标签,可以使用直接定位
-
当页面中有多个相同标签的元素时
-
find_element 默认定位第一个
-
find_elements 定位所有相同名称的标签
-
遍历使用
-
-
-
1.5超链接定位
-
语法
-
link_text 全部文本(超链接文本全部内容)
-
partial_link_text部分文本----连续,如果部分文本不唯一,默认定位第一个
-
-
用法
-
定位超链接,partial_link_text作为link_text的补充
-
1.6xpath定位
-
语法
-
selenium中语法
-
driver.find_element_by_xpath("xpath表达式")
-
-
xpath表达式
-
标签+属性
-
//标签名[@属性名="属性值"]
-
-
层级定位
-
//父标签[@父标签属性名="父标签属性值"]/子标签
-
-
索引
-
//父标签[@父标签属性名="父标签属性值"]/子标签[索引值] --索引值从1开始
-
-
逻辑
-
and
-
//标签名[@属性名1=属性值1 and @属性名2=属性值2 and ...]
-
-
-
模糊匹配
-
contains
-
//标签名[contains(@属性名,属性值/部分属性值)]
-
-
-
-
-
用法
-
当常用方法都无法对元素进行定位的时候,xpath定位方法
-
1.7 css_selector定位
-
语法
-
driver.find_element_by_css_selector("css表达式")
-
css表达式
-
id,class属性
-
# 表示id # id属性值
-
. 表示class .class属性值
-
-
其他属性
-
[属性名=属性值]
-
-
标签+属性
-
标签名[属性名=属性值]
-
-
层级
-
父标签[父标签属性名=父标签属性值]>子标签
-
-
索引
-
父标签[父标签属性名=父标签属性值]>子标签:nth-child(索引值)
-
-
逻辑(and)
-
标签名[属性名1=属性值1][属性名2=属性值2]
-
-
模糊匹配
-
*
-
标签名[属性名*=部分属性值]
-
^ 表示以...开头
-
$ 表示以...结尾
-
-
-
2.元素操作
2.1基本操作
-
清空
-
元素.clear()
-
-
输入
-
元素.send_keys("输入的内容")
-
先清空再输入
-
-
点击
-
元素.click()
-
2.2其他操作
-
获取元素文本
-
元素.text
-
-
获取元素属性
-
元素.get_attribute("属性名")
-
多用来自动化测试用例中的实际结果
-
判断元素是否可见
-
元素.is_displayed() 返回布尔值
-
-
判断元素是否可用
-
元素.is_enabled() 返回布尔值
-
作业day_2
1.手抄课堂代码1遍
2.敲2遍
3.注册A页面前9个元素,每个元素至少使用8种定位方式定位