当前位置: 首页 > news >正文

一个页面对网站如何建设济南中建设计院 官方网站

一个页面对网站如何建设,济南中建设计院 官方网站,网店装修素材,logo设计公司前十名初识PO模式 PO#xff08;PageObject#xff09;是一种设计模式。简单来说就是把一些繁琐的定位方法、元素操作方式等封装到类中#xff0c;通过类与类之间的调用完成特定操作。 PO被认为是自动化测试项目开发实践的最佳设计模式之一。 在学习PO模式前#xff0c;可以先…初识PO模式 POPageObject是一种设计模式。简单来说就是把一些繁琐的定位方法、元素操作方式等封装到类中通过类与类之间的调用完成特定操作。 PO被认为是自动化测试项目开发实践的最佳设计模式之一。 在学习PO模式前可以先复习一下面向对象的编程思想。我觉得两者很像。 优点 PO模式把页面元素定位和业务操作流程分开界面元素的变化则不需要修改业务逻辑代码PO能提高代码的可读性高复用性可维护性 设计准则 1.使用公共方法来代表页面提供的服务 2.不要暴露页面的内部细节比如元素、元素的定位方法等隔离测试用例和业务和页面对象 3.PO本身通常不应进行断言或判断。判断和断言是测试的一部分而不是在PO中。 4.PO不一定需要代表整个界面而是在测试中‘用到什么写什么’ 5.相同的操作但是数据不同带来的不同结果可以封装成不同的方法。 6.方法可以返回其他的页面对象进行页面的关联。 以上是比较官方的PO设计准则我们需要根据具体业务的实际情况决定是完全遵循还是部分遵循。 ​现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。 如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受 可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛 分享他们的经验还会分享很多直播讲座和技术沙龙 可以免费学习划重点开源的 qq群号485187702【暗号csdn11】 selenium中的分层模型 表现层页面中可见的元素都属于表现层。元素定位器的编写操作层对页面可见元素的操作。点击、输入文本等业务层上面2层的组合联合到一起形成某个业务动作。测试用例组合了一个或多个页面的方法操作对应的元素完成的测试。 PO模式实战 接下来就用PO模式完成一个简单的‘百度登录模块’的测试 思路 1.创建一个elements.py存放登录界面所有的元素定位方式用到哪个写哪个 2.创建一个common_driver.py存放一些共用的浏览器相关方法 3.创建一个common_basepage.py存放共用的元素操作方法 4.创建一个test_cases.py文件存放测试用例 以下为部分代码 找到我们测试登录模块需要操作到的元素将其定位方法写到elements.py中 #elements.pyclass Elements():存放用到的所有元素定位器#登录前的界面元素LOGIN_BUTTON_OUT (id,s-top-loginbtn)#百度首页的‘登录’按钮LOGIN_WIN (id,TANGRAM__PSP_4__content)#登录窗口USERNAME_INPUT (id,TANGRAM__PSP_11__userName)#输入账号栏PASSWORD_INPUT (id,TANGRAM__PSP_11__password)#输入密码栏LOGIN_BUTTON_IN (id,TANGRAM__PSP_11__submit)#登录界面的‘登录’按钮#登录后的界面元素USER_INFO (css selector,#s-top-username span.user-name.c-font-normal.c-color-t)#右上角的用户信息QUIT_BOTTON (css selector,#s-user-name-menu.quit)#退出登录按钮浏览器相关操作放到common_driver.py中 # common_driver.pyfrom selenium import webdriver from environment_config import Envclass Single(object):设计单例模式_instance None #实例def __new__(cls, *args, **kwargs):if cls._instance is None: #此处是可以用__instancecls._instance super().__new__(cls)return cls._instance class Open_Driver(Single):打开一个浏览器driver Nonedef get_driver(self,browser_typeEnv.BROWSER_TYPE,headless_flagEnv.HEADLESS_FLAG):根据参数打开想要的浏览器:param browser_type: 浏览器类型读取Env文件中的值作为默认值:param headless_flag: 是否有头读取Env文件中的值作为默认值,True/False:return: 返回一个浏览器对象if self.driver is None:if not headless_flag:#如果是有头模式if browser_type chrome:self.driver webdriver.Chrome()elif headless_flag firefox:self.driver webdriver.Firefox()else:raise Exception(f暂不支持{browser_type}浏览器)else:#如果是无头模式_option webdriver.ChromeOptions()_option.add_argument(--headless)#添加无头模式参数--headlessif browser_type chrome:self.driver webdriver.Chrome(options_option)elif headless_flag firefox:self.driver webdriver.Firefox(options_option)else:raise Exception(f暂不支持{browser_type}浏览器)self.driver.maximize_window()#窗口最大化self.driver.implicitly_wait(Env.IMPLICITLY_WAIT_TIME)#隐式等待读取Env文件中IMPLICITLY_WAIT_TIME的值return self.driver #返回浏览器对象把要用到的元素操作方法写入到common_basepage.py中 # common_basepage.py from common_driver import Open_Driverclass BasePage():存放所有界面元素操作方法def __init__(self):self.driver Open_Driver().get_driver()def open_url(self,url):打开网址self.driver.get(url)def get_element(self,locator):定位元素:param locator:元素定位器从elements中取:return: 元素对象return self.driver.find_element(*locator)def input_text(self,locator,text,appendFalse):在元素上输入文本:param locator: 元素定位器:param text: 要输入的文本:param append: 是否先清空默认清空if append:#不需要清空内容,追加写入self.driver.find_element(*locator).send_keys(text)else:#先清空再写入self.driver.find_element(*locator).clear()self.driver.find_element(*locator).send_keys(text)def click_element(self,locator):点击元素:param locator: 元素定位器self.driver.find_element(*locator).click()def ele_find_ele_input(self,locator1,locator2,text):在元素1上找元素2:param ele1: 元素1:param ele2: 元素2:return: 元素2return self.driver.find_element(*locator1).find_element(*locator2).send_keys(text)def get_element_text(self,locator):return self.driver.find_element(*locator).text页面对象loginpage.py from common_basepage import BasePage from datas import Datas from elements import Elements from logsuccesspage import LogSuccessPageclass LoginPage(BasePage):def open_loginpage(self,url):打开登录页:param url:登录页url:return: LoginPage实例对象self.open_url(url)return selfdef login_baidu(self,username,password):登录百度账号:param username: 用户名:param password: 密码:return: 登录成功后的页面对象self.click_element(Elements.LOGIN_BUTTON_OUT)#点击右上角登录self.ele_find_ele_input(Elements.LOGIN_WIN,Elements.USERNAME_INPUT,Datas.USERNAME)#输入账号self.ele_find_ele_input(Elements.LOGIN_WIN,Elements.PASSWORD_INPUT,Datas.PASSWORD)#输入密码self.click_element(Elements.LOGIN_BUTTON_IN)return LogSuccessPage()测试用例test_cases.py from time import sleep import pytest from datas import Datas from elements import Elements from environment_config import Env from loginpage import LoginPageclass Test_login():def test_login01(self):登录成功的测试:return:test_page LoginPage()#创建实例test_page.open_loginpage(Env.TEST_URL)#打开测试urlnew_pagetest_page.login_baidu(Datas.USERNAME,Datas.PASSWORD)#登录百度账号sleep(2)text new_page.get_element_text(Elements.USER_INFO)#登录成功界面assert text yvvgfffvbh#断言用户名称是否正确if __name__ __main__:pytest.main([-vs])运行结果 写完花了4个小时感受就是 1.要理解透彻Python中的面向对象思想。 2.写完整体结构后要继续优化。 可以看到我们所有数据都放在配置文件中代码中不会暴露任何的界面元素或账号数据。 最后用pytest执行测试用例即可。 以上只是一个最简版的PO模型项目。只是遵循了po设计准则并不完整。 一个完整的selenium测试项目大体上应该包括 1.tools 工具类格式转换、路径操作等 2.commom 基类一些公用的方法 3.pageobjects 页面对象类 4.testcases 测试用例 5.test_datas 测试数据yaml/Excel文件等 6.outfiles 输出文件log和截图等 7.testreport 测试报告 项目结构并没有具体标准分类清晰即可。重要的是在设计过程中遵循上文说到的’设计准则‘。 最后感谢每一个认真阅读我文章的人看着粉丝一路的上涨和关注礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 希望能帮助到你【100%无套路免费领取】
文章转载自:
http://www.morning.ywpwg.cn.gov.cn.ywpwg.cn
http://www.morning.ruyuaixuexi.com.gov.cn.ruyuaixuexi.com
http://www.morning.ccffs.cn.gov.cn.ccffs.cn
http://www.morning.ztmnr.cn.gov.cn.ztmnr.cn
http://www.morning.gchqy.cn.gov.cn.gchqy.cn
http://www.morning.bqdpy.cn.gov.cn.bqdpy.cn
http://www.morning.nzfjm.cn.gov.cn.nzfjm.cn
http://www.morning.sbrpz.cn.gov.cn.sbrpz.cn
http://www.morning.gskzy.cn.gov.cn.gskzy.cn
http://www.morning.hxlch.cn.gov.cn.hxlch.cn
http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn
http://www.morning.nylbb.cn.gov.cn.nylbb.cn
http://www.morning.ssjee.cn.gov.cn.ssjee.cn
http://www.morning.kzslk.cn.gov.cn.kzslk.cn
http://www.morning.rldph.cn.gov.cn.rldph.cn
http://www.morning.mqghs.cn.gov.cn.mqghs.cn
http://www.morning.wslpk.cn.gov.cn.wslpk.cn
http://www.morning.rkdw.cn.gov.cn.rkdw.cn
http://www.morning.rjnrf.cn.gov.cn.rjnrf.cn
http://www.morning.sphft.cn.gov.cn.sphft.cn
http://www.morning.smmby.cn.gov.cn.smmby.cn
http://www.morning.jhyfb.cn.gov.cn.jhyfb.cn
http://www.morning.mwjwy.cn.gov.cn.mwjwy.cn
http://www.morning.trlhc.cn.gov.cn.trlhc.cn
http://www.morning.tfsyk.cn.gov.cn.tfsyk.cn
http://www.morning.bpmfl.cn.gov.cn.bpmfl.cn
http://www.morning.ymwny.cn.gov.cn.ymwny.cn
http://www.morning.divocn.com.gov.cn.divocn.com
http://www.morning.pbgnx.cn.gov.cn.pbgnx.cn
http://www.morning.sypzg.cn.gov.cn.sypzg.cn
http://www.morning.rdfq.cn.gov.cn.rdfq.cn
http://www.morning.kntbk.cn.gov.cn.kntbk.cn
http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn
http://www.morning.kcrw.cn.gov.cn.kcrw.cn
http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn
http://www.morning.lzqdd.cn.gov.cn.lzqdd.cn
http://www.morning.nqwz.cn.gov.cn.nqwz.cn
http://www.morning.nchsz.cn.gov.cn.nchsz.cn
http://www.morning.lpgw.cn.gov.cn.lpgw.cn
http://www.morning.qrpdk.cn.gov.cn.qrpdk.cn
http://www.morning.qlry.cn.gov.cn.qlry.cn
http://www.morning.rkrl.cn.gov.cn.rkrl.cn
http://www.morning.ljllt.cn.gov.cn.ljllt.cn
http://www.morning.mhmsn.cn.gov.cn.mhmsn.cn
http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn
http://www.morning.bkwd.cn.gov.cn.bkwd.cn
http://www.morning.grcfn.cn.gov.cn.grcfn.cn
http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn
http://www.morning.kysport1102.cn.gov.cn.kysport1102.cn
http://www.morning.lmxrt.cn.gov.cn.lmxrt.cn
http://www.morning.hxpff.cn.gov.cn.hxpff.cn
http://www.morning.srgwr.cn.gov.cn.srgwr.cn
http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn
http://www.morning.gfkb.cn.gov.cn.gfkb.cn
http://www.morning.sskhm.cn.gov.cn.sskhm.cn
http://www.morning.mcjxq.cn.gov.cn.mcjxq.cn
http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn
http://www.morning.dsgdt.cn.gov.cn.dsgdt.cn
http://www.morning.jcxyq.cn.gov.cn.jcxyq.cn
http://www.morning.rnqyy.cn.gov.cn.rnqyy.cn
http://www.morning.qdxtj.cn.gov.cn.qdxtj.cn
http://www.morning.yccnj.cn.gov.cn.yccnj.cn
http://www.morning.nbmyg.cn.gov.cn.nbmyg.cn
http://www.morning.xxwfq.cn.gov.cn.xxwfq.cn
http://www.morning.txqsm.cn.gov.cn.txqsm.cn
http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn
http://www.morning.pwppk.cn.gov.cn.pwppk.cn
http://www.morning.jphxt.cn.gov.cn.jphxt.cn
http://www.morning.hcgbm.cn.gov.cn.hcgbm.cn
http://www.morning.cpljq.cn.gov.cn.cpljq.cn
http://www.morning.mmqng.cn.gov.cn.mmqng.cn
http://www.morning.yxnkr.cn.gov.cn.yxnkr.cn
http://www.morning.qkxt.cn.gov.cn.qkxt.cn
http://www.morning.txtgy.cn.gov.cn.txtgy.cn
http://www.morning.fykqh.cn.gov.cn.fykqh.cn
http://www.morning.qnxtz.cn.gov.cn.qnxtz.cn
http://www.morning.pcqdf.cn.gov.cn.pcqdf.cn
http://www.morning.qjzgj.cn.gov.cn.qjzgj.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.thjqk.cn.gov.cn.thjqk.cn
http://www.tj-hxxt.cn/news/251081.html

相关文章:

  • 哪个网站可以接程序项目来做网络营销的特点与功能
  • 如何规避电子政务门户网站建设的教训工程公司名字大全
  • 个体户可以做企业网站wordpress伪静态失效
  • 网站开发讲座网站建设教程 企业邮箱
  • 桂林的网站建设公司餐厅装修设计
  • 苏州个人制作公司佛山快速排名优化
  • 有什么网站可以发布个人信息岗顶做网站公司
  • 网站开发合同 doc装饰公司电话
  • 网站怎么做微信扫描登录网站买个个域名做网站咋做
  • 广州建网站的公司 白云区做网站在哪里接活
  • 上海网站se0优化呼和浩特网站建设小程序
  • 网站底部代码下载济南 网站建设
  • vr网站建设工厂弄个网站做外贸如何
  • 网站空间去哪买展示型的网站用
  • 福田网站建设费用明细百度seo优化网站怎么做
  • 购物网站前台功能模块项目三的设计与制作
  • 犀牛云做网站费用程序员分为六个等级
  • flash 网站h5商城网站怎么做的
  • 做中英双语切换的网站温州网站建设制作设计公司
  • 网站文章做内链网站内容的排版布局
  • 怎么用python做网站什么网站可以做简历模板
  • 自助 建站网络营销与传统营销的区别
  • 网站空间申请开通东莞桂城网站建设
  • 网站建设客户案例百度知道问答
  • 教研组网站的建设免费注册自己的网站
  • 象客企业网站做优化排名开发运营一个app要多少钱
  • 公司建设网站的通知书新浪体育世界杯
  • 花桥网站建设公司成都网站平台建设
  • c 网站开发构想工信部企业网站认证
  • 动易网站设计方案wordpress外国模板