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)
posted @ 2015-03-03 17:40  测试小开  阅读(601)  评论(1编辑  收藏  举报