设为首页 加入收藏

TOP

Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型(二)
2017-12-23 06:06:55 】 浏览:742
Tags:Selenium Python ---- 登录 等待 unittest 单元 测试 框架 模型
([],self.verificationErrors)
17 18 def test_sou1(self): 19 """测试搜索演示1""" 20 self.driver.get(self.url) 21 self.driver.find_element_by_id("kw").send_keys("测试") 22 self.driver.find_element_by_id("su").click() 23 self.driver.close() 24 time.sleep(5) 25 def test_sou2(self): 26 """测试搜索演示2""" 27 self.driver.get(self.url) 28 self.driver.find_element_by_id("k").send_keys("自动化测试") 29 self.driver.find_element_by_id("su").click() 30 self.driver.close() 31 time.sleep(5) 32 33 #生成一个运行测试用例集合 34 suite = unittest.TestSuite() 35 suite.addTest(Test_case('test_sou1')) 36 suite.addTest(Test_case('test_sou2')) 37 38 ''' 39 生成基于html的测试报告: 40 1定义一个文件的路径 41 2以写的方式进行打开文件 42 3调用htmltestrunner的方法生成测试报告 43 4运行测试集合 44 5关闭文件 45 ''' 46 report_file=".\\20170423_report.html" 47 fp = open(report_file,"wb") 48 runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title="搜索",description="测试搜索结果") 49 runner.run(suite) 50 fp.close()

5、PO模型

PO就是一个设计思想,将代码以页面为单位进行组织,针对这个页面上的所有信息、相关操作都放到一个类中,从而使具体的测试用例变成了简单的调用和验证操作。

优点:进行了拆分和分层

缺点:对于复杂的业务page层变了,case也需要去改动

PO模型的目录结构:

其中,base_page是login_page、search_page的基础。test_login调用login_page,login_page调用base_page,同理test_search。

PO代码示例:

base_page.py

 1 from selenium.webdriver.support.wait import WebDriverWait
 2 
 3 '''
 4 这个类主要是完成所有页面的一些公共方法的封装
 5 '''
 6 class Action(object):
 7     #初始化
 8     def __init__(self,se_driver):
 9         self.driver = se_driver
10 
11     #定义open方法
12     def open(self,url):
13         self.driver.get(url)
14         self.driver.maximize_window()
15 
16     #重写元素定位的方法
17     def find_element(self,*loc):
18         try:
19             WebDriverWait(self.driver,20).until(lambda driver:driver.find_element(*loc).is_displayed())
20             return self.driver.find_element(*loc)
21         except Exception as e:
22             print("未找到%s"%(self,loc))
23 
24     #定义script方法,用于执行js脚本
25     def script(self,src):
26         self.driver.execute_script(src)
27 
28     #重写send_keys方法
29     def send_keys(self,loc,value,clear_first=True,clik_first=True):
30         try:
31             if clik_first:
32                 self.find_element(*loc).click()
33             if clear_first:
34                 self.find_element(*loc).clear()
35                 self.find_element(*loc).send_keys(value)
36         except AttributeError:
37             print("未找到%s"%(self,loc))

login_page.py

 1 from selenium.webdriver.common.by import By
 2 from seleniumframework.PO import base_page
 3 import time
 4 
 5 class LoginPage(base_page.Action):
 6     link_loc = (By.LINK_TEXT,"登录")
 7     name_loc = (By.ID,"TANGRAM__PSP_8__userName")
 8     password_loc = (By.ID,"TANGRAM__PSP_8__password")
 9     submit_loc = (By.ID,"TANGRAM__PSP_8__submit")
10 
11     username_top = (By.LINK_TEXT,"hanxiaobei")
12 
13 
14     def click_link(self):
15         self.find_element(*self.link_loc).click()
16         time.sleep(3)           #等待3秒,等待登录弹窗加载完成
17 
18     def run_case(self,value1,value2):
19         self.find_element(*self.name_loc).send_keys(value1)
20         self.find_element(*self.password_loc).send_keys(value2)
21         time.sleep(20)          #手动输入验证码
22         self.find_element(*self.submit_loc).click()
23         time.sleep(5)           #等待5秒,登录后的页面加载完成
24 
25     def get_username(self):
26         return self.find_element(*sel
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇window7_64+python3.6安装Twisted 下一篇Celery(四)定时任务

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目