codecamp

实例分析

脚本的开头我们引入了所有需要的模块,单元测试是python内置的类似​Java JUnit​的模块,提供了组织单元测试的框架。 ​selenium.webdriver​模块提供了​WebDriver​的所有实现: ​Firefox​,​Ie​,​Chrome​,​Remote​,​Keys​类提供了键盘的代码(回车,​ALT​,​F1​等等):

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

测试用例类继承了​unittest.TestCase​类,这表明这个类是一个测试用例:

class PythonOrgSearch(unittest.TestCase):

setUp​函数进行了初始化,你将要在这个类里编写的所有测试方法都要先调用这个方法,接着我们创建了一个​Firefox WebDriver​实例:

def setUp(self):
    self.driver = webdriver.Firefox()

接下来是测试用例的方法,它应该总是以字符​'test'​开始. 方法的第一行 本地引用了 ​setUp​方法中创建的​driver​对象:

def test_search_in_python_org(self):
    driver = self.driver

driver.get​方法会导向给定的URL的页面,​WebDriver​会等待页面完全加载完(就是​onload​函数被触发了),才把程序的控制权交给你的测试或者脚本。 但是如果你的页面用了太多的AJAX,那么这个机制就没什么用了,因为它不知道页面到底是什么时候加载完。

  driver.get("http://www.python.org")

下一行是个断言,确认页面标题里是否有​'Python'​这个单词:

  self.assertIn("Python", driver.title)

WebDriver​提供了一系统类似于​find_element_by_*​的方法来寻找页面元素,例如,我们利用​find_element_by_name​方法,通过元素的​name​属性来定位一个文本输入框元素。 更详细的寻找元素的方法可以参阅 第四章-元素定位:

  elem = driver.find_element_by_name("q")

接着我们发送了一些字符,类似于用键盘直接输入。特殊的键盘符我们可以导入​selenium.webdriver.common.keys​,然后用​Keys​类来表示:

elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)

提交页面之后我们应该确认一下是否有返回,为了确定有东西返回,我们在这里下一个断言:

  assert "No results found." not in driver.page_source

最后浏览器窗口被关闭了,你也可以调用​quit​方法来代替​close​,区别在于​quit​会退出整个浏览器,而​close​只会关闭一个标签,但是如果浏览器只有一个标签,那么这两个方法完全一样,都会关闭整个浏览器。

  driver.close()

最后一行是运行测试套件的一些样板代码:

if __name__ == "__main__":
    unittest.main()


使用selenium测试
使用selenium的remote WebDriver
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }