什么是selenium
Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,支持多平台、多浏览器、多语言去实现自动化测试,支持分布式测试用例的执行。
Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。
Selenium已经从之前的1.0(RC)进化到了现在的Selenium2(Selenium1+WebDriver)。
Selenium 2.0(又名Selenium WebDriver)的主要新功能是集成了 WebDriver。WebDriver 曾经是 Selenium1(Selenium RC)的竞争对手。Selenium RC 在浏览器中运行 JavaScript 应用,而 WebDriver 通过原生浏览器支持或者浏览器扩展直接控制浏览器。之所以合并,原因如下:
-
WebDriver 解决了 Selenium 存在的缺点(比如,绕过 JS 沙箱);
-
Selenium 解决了 WebDriver 存在的问题(例如支持广泛的浏览器);
-
Selenium 的主要贡献者们都觉得合并项目是为用户提供最优秀框架的最佳途径。
Selenium 2.0 还包括 Selenium Server,通过 Selenium Grid 支持分布式测试。新的 Selenium Grid 支持使用原来的 Selenium RC API 和 WebDriver API 测试。Selenium IDE也将支持 WebDriver API,包括将录制生成的测试用例导出为 WebDriver 所支持的各种编程语言(Ruby、Python、C# 和 Java)。
webdriver的工作原理:
webdriver Api(编写的测试脚本),就相当于乘客一样,对出租车司机提出要求(去哪,几点到)
webdriver ,相当于出租车的司机,根据客户的需求来操作出租车
Browser(浏览器),相当于出租车,被司机操作执行。
selenium的简单用法
导入需要的包
from selenium import webdriver
import time ,os
获得浏览器的驱动
brower = webdriver.Firefox() #获得火狐浏览器的驱动
brower = webdriver.Chrome() #获得谷歌浏览器的驱动(首字母要大写)
暂停或休眠
time.sleep(2) # 休眠三秒
browser.implicitl_wait(3) # 只能等待三秒,等待的时间在0 - 3秒之间
定位找到元素(一定要能过精确的定位到具体的元素,全局唯一)
# 通过ID获得
driver.find_element_by_id()
# 通过name获得
driver.find_element_by_name()
# 通过class 名获得
driver.find_element_by_class_name()
# 通过css选择器获得
driver.find_element_by_css_selector()
# 通过路径获得
driver.find_element_by_xpath()
# 通过连接的内容获得
driver.find_element_by_link_text()