概念:
Selenium 官网:http://seleniumhq.org/
1.Selenium是一个用于Web应用程序自动化测试工具,模拟人工对页面的操作。
2.Selenium主要包括三部分:Selenium IDE、Selenium WebDriver和Selenium Grid:
- Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如python等)的形式导出成。
- Selenium WebDriver:WebDriver 是 Selenium 2 主推的工具,事实上WebDriver是Selenium RC的替代品,因为Selenium需要保留向下兼容性的原因,在 Selenium 2 中, Selenium RC才没有被彻底的抛弃,如果使用Selenium开发一个新的自动化测试项目,那么我们强烈推荐使用Selenium2 的 WebDriver进行编码。 在Selenium 3 中,Selenium RC 被移除了。
- Selenium Grid:提供了在不同机器的不同浏览器上运行selenium测试的能力
功能:
1.测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
2.测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
元素定位:
selenium提供了八种元素定位:id、name、class、tag、link、patail_link、xpath、css
时间等待:
强制等待固定秒数
time.sleep(time) # 强制等待3秒后,进行下一步操作,也可以是小数,单位为秒
- 缺点:不能准确把握需要等待的时间(有时候操作未完成,等待就结束了,导致报错;有时候操作已经完成了,但时间还没到,浪费时间),如果再用例中大量使用,会浪费不必要的等待时间,影响用例的执行效率。
- 优点:使用简单,可以在调试时使用。
隐式等待
driver.implicitly_wait(X) # 在X时间内,页面加载完成,进行下一步操作,单位为秒。
- 缺点:使用隐式等待,程序会一直等待页面加载完成,才会执行下一步操作(有时候页面想要的元素早已加载完成了,但是页面上个别元素还没有加载完成,仍要等待页面全部完成才能执行下一步,使用也不是很灵活)
- 优点:隐式等待对整个driver的周期都起作用,所以只要设置一次即可
显式等待
最长等待n秒,n秒内每隔一段时间去检查需要定位的元素是否存在,若存在则提前结束等待。也是WebDriver提供的等待方法,也被称为显性等待,这种等待比隐性等待更智能了一些,无视整个页面的加载,只要需要的元素存在了,就结束等待。
#包
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
#显式等待的方法
def wait(self, locator):
element = (By.CSS_SELECTOR, locator)
WebDriverWait(self.driver, 10, 0.5).until(expected_conditions.element_to_be_clickable(element))
#WebDriverWait(driver, 超时时间, 调用频率, 要忽略的异常).until(要执行的方法, 超时时返回的错误信息)
WebDriverWait类
1、until()
until()方法:直到条件成立返回为真,等待结束。如果超时,抛出TimeoutException,将message传入异常。
2、until_not()
until_not()方法:直到条件不成立返回为真,是当某元素消失或什么条件不成立则继续执行,等待结束。如果超时,抛出TimeoutException,将message传入异常。
3、excepted_conditions异常处理模块
expected_conditions是selenium的一个模块,其中包含一系列可用于判断的条件方法。
浏览器操作:
主要模拟浏览器打开,关闭,刷新,获取浏览器信息,设置浏览器打开大小,位置,以及cookie相关信息。