1.Selenium介绍
Selenium 是一款基于Web应用程序的功能测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。其主要特点如下:
开源,免费
多浏览器支持:Chrome,Firefox,Opera等
多平台支持:Linux,Windows,Mac
多语言支持:Python,Java,Ruby等
对Web页面有良好的支持
API简单,灵活(用开发语言驱动)
2.自动化测试优缺点
优点:
节省人力,提高回归测试效率;
节省时间,较少时间运行更多测试
精准测试,增加软件信任度
测试复用性高
手工测试不能做的事(并发)
缺点:
需求变更频繁,工具维护困难
对软件质量依赖极大
难于发现新bug(工具无想象力)
没手动测试发现bug多
不能取代手动测试
Selenium安装需要配合驱动软件
同版本浏览器(如谷歌)需要配合同版本浏览器驱动
3.第一个自动化程序
from selenium import webdriver
browser = webdriver.Chrome() 获得浏览器对象
browser.get("http://www.baidu.com") 访问网站
browser.find_element_by_id("kw").send_keys("selenium")
通过 id 定位到搜索框并输入搜索内容
browser.find_element_by_id("su").click() 点击搜索
4.底层匹配语句
find_element_by_xx 定位元素
xx 可以是 id, name, class_name, tag_name, link_text, xpath, css_selector
其中
class_name 为HTML页面class 类名字;
tag_name 为div标签名称
xpath 为路径
link_text 为文本内容(汉字)
定位元素总结
1.页面元素有id或name属性时,尽量用id或name定位
2.xpath很强悍,但定位性能不是很好,尽量少用。对于比较难定位的元素,可以选择xpath
3.当有超链接需要定位时,可以选择link_text
4.当xpath以 '/'开头时,表示让xpath从根节点开始解析;当xpath以 '//'开头时,表示从任意符合的元素节点开始解析
5.Selenium控件方法
针对操作浏览器的方法----浏览器对象
maximize_window() 浏览器最大化
set_window_size(width, height) 设置浏览器的宽和高
close() 关闭当前浏览器
quit() 关闭浏览器
forward() 控制浏览器前进
back() 控制浏览器后退
针对操作元素的方法----元素对象
clear() 清除元素的内容,一般用于输入框
send_keys() 模拟元素输入,一般用于输入框
click() 单击元素,一般用于按钮
text 获取元素的文本
is_displayed() 元素是否用户可见
6.一些易错点
切换句柄
自动化测试只会对当前页面操作,匹配元素也是当前页面
当点击元素/超链接等,生成新的标签页时(窗口)需要切换句柄才能匹配到
browser.implicitly_wait(10) 生成浏览器对象后隐式等待,很重要
handles = browser.window_handles 获得句柄,是一个数组
browser.switch_to_window(handles[1]) 选择第二个句柄(窗口)