#coding=utf-8
from
selenium
import
webdriver
from
selenium.webdriver.common.by
import
By
from
selenium.webdriver.common
import
keys
from
selenium.webdriver.support
import
select
from
selenium.common
import
exceptions
import
unittest,time,re
class
Baidu(unittest.TestCase):
#setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。这里将浏览器的调用和URL的访问放到初始化部分。#
def
setUp(
self
):
self
.driver
=
webdriver.Firefox()
self
.driver.implicitly_wait(
30
)
self
.base_url
=
'http://www.baidu.com/'
self
.verificationErrors
=
[]
#脚本运行时,错误的信息将被打印到这个列表中#
self
.accept_next_alert
=
True
#是否继续接受下一个警告#
#百度搜索用例
def
test_baidu_serch(
self
):
driver
=
self
.driver
driver.get(
self
.base_url)
driver.find_element_by_id(
"kw"
).send_keys(
"selenium webdriver"
)
driver.find_element_by_id(
"su"
).click()
time.sleep(
2
)
driver.quit()
#百度设置用例
def
test_baidu_set(
self
):
driver
=
self
.driver
#进入搜索设置页
driver.get(
self
.base_url
+
'gaoji/preferences.html'
)
m
=
driver.find_element_by_name(
'NR'
)
#设置每页搜索结果为100条,先找到ID=NR的标签,再找到ID=NR标签下的option标签value值等于100的选择按钮
m.find_element_by_xpath(
"//option[@value='100']"
).click()
time.sleep(
2
)
#保存设置的信息
driver.find_element_by_xpath(
"//input[@value='保存设置']"
).click()
time.sleep(
2
)
n
=
driver.switch_to_alert()
n.accept()
def
tearDown(
self
):
self
.driver.quit()
self
.assertEqual([],
self
.verificationErrors)
'''
tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出浏览器等。
self.assertEqual([], self.verificationErrors) 是个难点,
对前面verificationErrors方法获得的列表进行比较;如查verificationErrors的列表不为空,输出列表中的报错信息。'''
if
__name__
=
=
"__main__"
:
unittest.main()
#执行用例#
'''
执行结果如下:
Ran 2 tests in 30.719s 执行测试完所有测试用例,用了70.719S
ok 没有问题
如果你在用例中故意设置一个错误,例如:
百度设置用例中增加这样一行代码,查找到name为DR的标签,并单击它,因为这个是没有的,找不到这个标签,系统会报错,
driver.find_element_by_name('DR').click()
这时执行结果显示如下:
Ran 2 tests in 70.719s
FAILED (errors=1)
'''