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

南宁网站建设加王道下拉做一个app需要多少钱?

南宁网站建设加王道下拉,做一个app需要多少钱?,做淘客网站去哪里购买空间,做网站网站判刑初识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设计准则我们需要根据具体业务的实际情况决定是完全遵循还是部分遵循。 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 测试报告 项目结构并没有具体标准分类清晰即可。重要的是在设计过程中遵循上文说到的’设计准则‘。 学习安排上 如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助。 视频文档获取方式 这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片进群即可自行领取。
http://www.w-s-a.com/news/773512/

相关文章:

  • ps切片工具做网站大气简洁网站
  • 网至普的营销型网站建设wordpress邮箱验证插件下载
  • 找权重高的网站方法张家港早晨网站建设
  • WordPress数据库添加管理员关键词优化举例
  • 河南国基建设集团--官方网站wordpress qode
  • 做农村电子商务的网站有哪些内容静态网站模板古典
  • 导航网站设计方案个人网站推广方法
  • 网站排名易下拉教程防wordpress花园
  • 计算机网站建设 是什么意思现在网站建站的主流语言是什么
  • php网站跟随导航西安百姓网免费发布信息网
  • 濮阳做公司网站html5 特效网站
  • ppt设计器怎么打开深圳seo网络推广营销
  • 建设银行网站用360浏览器建设信用卡中心网站
  • 创建公司网站 教程广州建设局
  • 详述网站建设的过程简答题ui培训设计怎么样
  • 动易网站官网ppt主题大全素材
  • 怎样用eclipse做网站可以做宣传图的网站
  • 哪里可以做游戏视频网站做网站平台应该注意哪些
  • 网站后期推广是谁来做网页制作步骤作答题
  • 全屋装修设计定制整装成都网站优化多少钱
  • html5购物网站模板一个网站两个数据库
  • 个人网站怎么做微信支付网站建设项目介绍
  • 建网站合同网站适配移动端和PC端
  • 网站建设培训机构哪里好html5开发wap网站
  • 免费自助建站源码学而思网校官网
  • 中国最大的网站制作公司青海省高等级公路建设管局网站
  • 建设网站对服务器有什么要求吗wordpress去除更新提示
  • 找个为公司做网站的手机端原神
  • 邯郸手机建站价格公众号开发者权限哪里添加
  • wordpress模板电子书下载站微信app官方免费下载