PO模型
大神绕道而行,自我小白的笔记,仅此
一、创建文件夹,创建xxx.ini文件用来存放界面的定位元素,用 [界面_element]-->界面, 来划分界面界面元素,维护方便。定位元素的格式: user=name>username
user:定位元素的名称,自己起。name:定位元素的方法。> :分隔符。username:元素name的值
[login_element] #------->界面
username=name>j_username
login=id>imgLogin
loginerror=xpath>/html/body/div/div[2]/div/div[1]/div[3]/div[1]/div[1]/div/div/div[6]/div/span[1]
[yewu_element]
zhankaicaidan=class_name>z-west-exp
[jiemian_element]
caidan=xpath>//div[@class='z-borderlayout-icon z-west-exp']
[qiyun_login]
jihau=xpath>//div[contains(text(),'我的计划')]
二、创建工具文件夹,创建读取xxx.ini文件的方法代码如下:调用时:输入参数('界面','定位元素的名称'),返回结果:定位元素的方法>元素的值,如:
aa=ReadyuansuIni()
a=aa.get_ini('login_element','username')
print(a)
结果:
name>j_username
代码如下:
import configparser
class ReadyuansuIni:
def read_mulu(self):
read_yuansuini = configparser.ConfigParser()
read_yuansuini.read('文件路径\\xxx.ini',encoding="utf-8-sig") # 读取目录,可以用os
return read_yuansuini
def get_ini(self,byx,key):
if byx=='login_element':
return self.read_mulu().get(byx,key)
elif byx=='yewu_element':
return self.read_mulu().get(byx,key)
elif byx=='jiemian_element':
return self.read_mulu().get(byx, key)
elif byx=='qiyun_login':
return self.read_mulu().get(byx, key)
三、在工具文件夹中再创建定方法的py文件,封装读取元素用什么定位方法定位,
from 路劲 import ReadyuansuIni
class Getby:
def __init__(self,driver):
self.driver=driver
def get_element(self,bxy,key):
read_ini=ReadyuansuIni()
read_neirong=read_ini.get_ini(bxy,key)
fangshi = read_neirong.split('>')[0]
dingwei = read_neirong.split('>')[1]
if fangshi == 'id':
return self.driver.find_element_by_id(dingwei)
elif fangshi == 'name':
return self.driver.find_element_by_name(dingwei)
elif fangshi == 'class':
return self.driver.find_element_by_class(dingwei)
elif fangshi == 'xpath':
return self.driver.find_element_by_xpath(dingwei)
elif fangshi == 'class_name':
return self.driver.find_elements_by_class_name(dingwei) '''这点是有区别的,driver.find_elements 复数,注意'''
四、建立文件用来获取所有界面元素信息
from 路劲 import Getby
class Login_page:#获取登录界面的所有元素信息
def __init__(self,driver):
self.fangfa = Getby(driver)
def get_username_element(self):
return self.fangfa.get_element('login_element', 'username')
def get_password_element(self):
return self.fangfa.get_element('login_element', 'password')
def get_login_element(self):
return self.fangfa.get_element('login_element', 'login')
五、建立文件来操作界面元素
#coding=utf-8
from 路劲 import Login_page
class LoginHandle:#操作页面的元素
def __init__(self,driver):
self.login_page = Login_page(driver)
def send_username(self,user):
self.login_page.get_username_element().send_keys(user)
def send_password(self, password):
self.login_page.get_password_element().send_keys(password)
def click_login(self):
self.login_page.get_login_element().click()
def zhankai_caidan(self):
self.login_page.get_zhankai_elements()[0].click()
六、建立文件来组织业务
#coding=utf-8
from yemian_caozuocang_handle.login_handle import LoginHandleclass LoginBusiness:
def __init__(self,driver):
self.login_handle = LoginHandle(driver)
self.driver=driver
def login_pass(self,user,password):
self.login_handle.send_username(user)
self.login_handle.send_password(password)
self.login_handle.click_login()
七、case层
import unittest,time
from selenium import webdriver
import HTMLTestRunner
from yewucang_business.login_business import LoginBusiness
from log.get_log import log
log = log()
get_log = log.get_log()
class Tsetlogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(20)
self.driver.get('网址')
get_log.error('This is Chrome')
self.aa = LoginBusiness(self.driver)
def test01_pass(self):
self.aa.login_pass('admin','admin123')
time.sleep(0.5)
title = self.driver.title
if title!='网页title':
case_name = self._testMethodName
jietu_path = '路经 + '.png'
self.driver.save_screenshot(jietu_path) # 截图
self.assertEqual(title, '网页title')
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
zhixing_case = unittest.TestSuite()
zhixing_case.addTest(Tsetlogin('test01_pass'))
baogao = "路经\\report.html"
fp = open(baogao, "wb")
HTMLTestRunner.HTMLTestRunner(stream=fp,title="报告title",description=u"说明吧").run(zhixing_case)
这里我只举例说明这样就成功了,用例可以加,还有断言,相对而言try比较好点。这里面的异常处理没有加。
PO模型的更多相关文章
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- Appium基于PO模型的自动化测试(Python)
基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...
- selenium3 web自动化测试框架 三:项目实战中PO模型的设计与封装
po模型设计思想 Page Object 模式主要是将每个页面设计为一个class,其中包含页面中的需要测试的元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调取页面类来获取页面 ...
- Appium+Python之PO模型(Page object Model)
思考:我们进行自动化测试时,如果把代码都写在一个脚本中,代码的可读性会变差,且后期代码维护也麻烦,最好的想法就是测试对象和测试用例可以分离,可以很快定位问题,代码可读性高,也比较容易理解.这里推荐大家 ...
- 【Selenium07篇】python+selenium实现Web自动化:PO模型,PageObject模式!
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第七篇博 ...
- UI自动化学习笔记- PO模型介绍和使用
一.PO模型 1.PO介绍:page(页面) object(对象) 在自动化中,Selenium 自动化测试中有一个名字经常被提及 PageObject (思想与面向对象的特征相同),通常PO 模型可 ...
- Selenium笔记:PO模型
所有用到的页面都定义成一个类,继承自基础的Page类 把页面中用到的元素定义成方法 把页面上一些操作定义成方法
- Appium基于Python unittest自动化测试 & 自动化测试框架 -- PO并生成html测试报告
基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...
- Selenium基于Python web自动化测试框架 -- PO
关于selenium测试框架首先想到的就是PO模型,简单说下PO模型 PO模型的概念和理解: PO就是一个设计思想,将代码以页面为单位进行组织,针对这个页面上的所有信息.相关操作都放到一个类中,从而使 ...
随机推荐
- jdbc ---- DBUTilDao 类
1, 列用工具包 阿里的 DbUtils: JDBC Utility Component Examples 再次封装成通用的 update, query package com.ljs.dao; i ...
- CentOS 7 升级内核
升级 CentOS 内核参考资料 1 升级 CentOS 内核参考资料 2 通过 /proc 虚拟文件系统读取或配置内核 Linux 内核官网 CentOS 官网 1. 关于 Linux 内核 Lin ...
- 网上常用免费WebServices集合
天气预报Web服务,数据来源于中国气象局 公用事业http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 中国股票行情分时走势预览缩略图 ...
- Flink - FlinkKafkaProducer010
https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/connectors/kafka.html 使用的方式, DataStr ...
- 使用反向代理的http的请求流程
此文章主要为刚接触反向代理的小伙伴梳理请求流程,以便更好的理解反向代理是何时工作的 流程 由于浏览器是有缓存的,所以本地的hosts文件的信息也会在浏览器端缓存 当客户端发起一个新的请求(例如:输入的 ...
- Python开发【笔记】:获取目录下所有文件
获取文件 import os def sub_dirs(rdir): li = os.listdir(rdir) return li def main(rdir): content = sub_dir ...
- python摸爬滚打之day09----初识函数
1.函数 把一段公共的代码提取出来通过一个变量(函数名)将这些代码重复调用, 使程序可拓展易维护. def 函数名(形参): 函数体 函数名(实参) -----> 调用该函数 2.return ...
- 用Eclipse构建Maven项目
Eclipse中m2eclipse插件的安装 Help>Install New Software Click Add Name: m2e Location: http://download.ec ...
- pl/sql中文乱码
增加系统变量变量名:NLS_LANG变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
- 20181223 python 使用Beautiful Soup
(这篇,没什么营养价值) 怎么说呢! 爬虫吧!把html页面进行解析得到有效数据,而beautiful soup 能快速格式化页面再进行方法对数进行提取,存入想要存入的DB中. from bs4 im ...