selenium pyunit单元测试框架

 


selenium pyunit单元测试框架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#PyUnit框架
#coding = utf - 8
#将要被测试的类
class Widget:
 
    def __int__(self,size = (40,40)):
        self._size = size
 
    def getSize(self):
        return self._size
 
    def resize(self,width,height):
        if width<0 or height < 0:
            raise ValueError,"illegal size"
        self._size = (width,height)
 
    def dispose(self):
        pass
#auto.py 测试类
#coding = utf-8
 
from widget import Widget
import unittest
 
#执行测试的类
class WidgetTestCase(unittest.TestCase):
    def setUp(self):
        self.widget = Widget()
 
    #测试getsize()方法的测试用例
    def testSize(self):
        self.assertEqual(self.widget.getSize(),(40,40))
 
    #测试resize()方法的测试用例
    def testResize(self):
        self.widget.resize(100,100)
        self.assertEqual(self.wiget.getSize(),(100,100))
 
    def tearDown(self):
        self.widget = None
 
#构造测试集
def suite():
    suite = unittest.TestSuite()
    suite.addTest(WidgetTestCase("testSize"))
    return suite

 

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#coding = utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest,time,re
 
class Baidu(unittest.TestCase):
 
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "https://www.baidu.com"
        self.verificationErrors = []
        self.accept_next_alert= True
 
    #百度搜索用例
    def test_baidu_search(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.close()
    #百度设置用例
    def test_baidu_set(self):
        driver = self.driver
        #进入搜索设置页面
        driver.get(self.base_url + "/gaoji/preferences.html")
 
        #设置每页搜索结果为100条
        m = driver.find_element_by_name("NR")
        m.find_element_by_xpath("//option[@value = '100']").click()
        time.sleep(2)
        #保存设置的信息
        driver.find_element_by_xpath("//[@value = '保存设置']").click()
        time.sleep(2)
        driver.switch_to.alert().accept() #切换到alert弹窗;Python2用法:switch_to_alert();Python3用法:switch_to.alert()
 
        #目前接触到的switch_to的用法包括以下几种:
        driver.switch_to.window(window_name)#切换到制定的window_name页面      
        driver.switch_to.alert()#切换到alert弹窗
        driver.switch_to.active_element()#切换到当前聚焦的元素上
        driver.switch_to.default_content()#切换到最上层页面(主文档?)
        driver.switch_to.frame(frame_reference)#通过id、name、element(定位的某个元素)、索引来切换到某个frame
        driver.switch_to.parent_frame()#这是switch_to中独有的方法,可以切换到上一层的frame,对于层层嵌套的frame很有用
 
    def tearDown(self):
        self.driver.quit()
        self.assertEqual([],self.verificationErrors)

  

posted @   局长  阅读(302)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示