一,UI自动化的操作流程
-
选择界面元素:
根据元素的特征:id,name, class_name, tag_name, link_text(根据超链接的文本定位),partial_link_text(根据超链接文本模糊匹配定位)
根据元素特征和关系:css, xpath
-
操作界面元素:
输入操作:点击,输入文字,拖拽等
输出操作:获取元素的各种属性
根据界面上获取的数据进行分析和处理
二,元素定位大法
# id 定位,,name ,class_name 都类似
driver.find_element_by_id('username').send_keys('sq2')
#根据标签名tag_name定位
driver.find_element_by_tag_name()
- 注意1:
** find_element, 会返回找到的第一个元素,如果根据表达式找不到元 素,就会报错
find_elements, 会寻找页面上所有满足表达式的元素,将所有能找到的元素存在一个列表中.如果一个找不到,那就返回一个空列表**
from selenium import webdriver
driver = webdriver.Chrome()
driver.find_element_by_class_name('form-control').send_keys('123') #登陆界面的用户名输入
# 寻找所有class 属性为form-control 元素,存入列表,列表赋值给变量 eleSli
elesli = driver.find_elements_by_class_name('form-control')
# 声明了一个列表
txtSli = ['111','2222']
# 事先知道 eleSli 列表中有两个元素,所有设置循环为两次
for i in range(2):
#elesli[idx] 每次循环,根据下表取出elesli 中的内容 ---一个元素
# 对这个元素输入文本,文本内容来源于 txtSli, 取相同的下标
elesli[i].send_keys(txtSli[i]) # 登陆界面的用户名和密码都填入进去
-
注意2:
class_name 中间有空格,不能直接使用。这种是复合类
class 属性比较特殊,空格代表间隔付好,表示这个元素的class 属性有多个值 ,任取其中一个值就可以定位(但是不保证唯一) -
注意3:
id 有可能是动态,动态的id 是不能使用,动态Id以数值开始的。表中经常使用。