selenium之HTMLTestRunner练习
最近工作不忙,开始学习python&selenium,有很多理解模糊的地方,做下记录,希望大神可以指导。
练习1:
小插曲1:执行代码以后,发现baidu.html空的,执行多次发现原因,必须关闭python执行窗口;
小疑问1:目前不太清楚方法close_alert_and_get_its_text,switch_to_alert;
错误1:执行多次偶尔会报错,还在琢磨:
error1: ft1.3: Traceback (most recent call last): File "C:\learn_python\Á·Ï°\baidu.py", line 44, in test_baidu_login driver.find_element_by_css_selector("#u1 > a[name=\"tj_login\"]").click() File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 376, in find_element_by_css_selector return self.find_element(by=By.CSS_SELECTOR, value=css_selector) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 664, in find_element {'using': by, 'value': value})['value'] File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 175, in execute self.error_handler.check_response(response) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 166, in check_response raise exception_class(message, screen, stacktrace) NoSuchElementException: Message: Unable to find element with css selector == #u1 > a[name="tj_login"] error2: ft1.1: Traceback (most recent call last): File "C:\learn_python\Á·Ï°\baidu.py", line 21, in test_baidu_set driver.find_element_by_css_selector("#u1 > a[name=\"tj_settingicon\"]").click() File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 376, in find_element_by_css_selector return self.find_element(by=By.CSS_SELECTOR, value=css_selector) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 664, in find_element {'using': by, 'value': value})['value'] File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 175, in execute self.error_handler.check_response(response) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 166, in check_response raise exception_class(message, screen, stacktrace) NoSuchElementException: Message: Unable to find element with css selector == #u1 > a[name="tj_settingicon"]
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
import HTMLTestRunner
class Baidu(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Ie()
self.driver.implicitly_wait(30)
self.base_url = "http://www.baidu.com"
self.verificationErrors = []
self.accept_next_alert = True
def test_baidu_set(self):
u'测试百度设置'
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_css_selector("#u1 > a[name=\"tj_settingicon\"]").click()
time.sleep(2)
driver.find_element_by_link_text("搜索设置").click()
time.sleep(2)
driver.find_element_by_link_text("保存设置").click()
#self.assertEqual(u"已经记录下您的使用偏好", self.close_alert_and_get_its_text())
#driver.switch_to_alert().accept()
def test_baidu_search(self):
u'测试百度搜索'
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(2)
driver.close()
#测试登陆
def test_baidu_login(self):
u'测试登陆'
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_css_selector("#u1 > a[name=\"tj_login\"]").click()
driver.find_element_by_id("TANGRAM__PSP_8__userName").click()
driver.find_element_by_id("TANGRAM__PSP_8__userName").clear()
driver.find_element_by_id("TANGRAM__PSP_8__userName").send_keys("用户名")
driver.find_element_by_id("TANGRAM__PSP_8__password").click()
driver.find_element_by_id("TANGRAM__PSP_8__password").clear()
driver.find_element_by_id("TANGRAM__PSP_8__password").send_keys("密码")
driver.find_element_by_id("TANGRAM__PSP_8__submit").click()
time.sleep(5)
driver.find_element_by_link_text("退出").click()
driver.find_element_by_link_text("确定").click()
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException, e: return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
#定义一个单元测试容器
testunit=unittest.TestSuite()
#添加测试用例:百度设置
testunit.addTest(Baidu("test_baidu_set"))
#添加测试用例:百度搜索
testunit.addTest(Baidu("test_baidu_search"))
#添加测试用例:百度登陆
testunit.addTest(Baidu("test_baidu_login"))
#输出报告路径
filename=u'C:\\learn_python\\练习\\baidu.html'
#打开报告,输入数据
fp=file(filename,'wb')
#定义测试报告
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title=u'百度测试报告',
description=u'用例执行情况:',
)
runner.run(testunit)