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

宁波易通宁波网站建设搜索引擎优化员简历

宁波易通宁波网站建设,搜索引擎优化员简历,wordpress 展开收缩插件,做系统网站建设1、Page Object模式简介 1、二层模型 Page Object Model#xff08;页面对象模型#xff09;, 或者也可称之为POM。在UI自动化测试广泛使用的一种分层设计 模式。核心是通过页面层封装所有的页面元素及操作#xff0c;测试用例层通过调用页面层操作组装业务逻辑。 1、实战 …1、Page Object模式简介 1、二层模型 Page Object Model页面对象模型, 或者也可称之为POM。在UI自动化测试广泛使用的一种分层设计 模式。核心是通过页面层封装所有的页面元素及操作测试用例层通过调用页面层操作组装业务逻辑。 1、实战  目录如下 home_page.py文件的内容 from selenium.webdriver.common.by import Byclass HomePage:login_link_locator (By.LINK_TEXT, 登录)def click_login_link(self,driver):# 前面加*号是解包的操作因为login_link_locator是元组driver.find_element(*self.login_link_locator).click() login_page.py文件的内容 from time import sleep from selenium import webdriver from selenium.webdriver.common.by import Byclass LoginPage:#属性-元素定位信息元素定位方法元素定位值-元组类型phone_input_locator (By.XPATH,//input[placeholder请输入手机号/用户名])pwd_input_locator (By.XPATH,//input[placeholder请输入密码])login_button_locator (By.CLASS_NAME,login-button)#操作-元素行为,登录操作def page_login(self,driver,phone,pwd):# *self.phone_input_locator 前面的*号是解包使用的driver.find_element(*self.phone_input_locator).send_keys(phone)driver.find_element(*self.pwd_input_locator).send_keys(pwd)sleep(2)driver.find_element(*self.login_button_locator).click() 登录案例 - PO.py的文件内容 from selenium import webdriver from d6_JavaScript处理.testcases.home_page import HomePage from d6_JavaScript处理.testcases.login_page import LoginPagedriver webdriver.Chrome() driver.maximize_window() driver.get(http://mall.banan.com:3344/) HomePage().click_login_link(driver)LoginPage().page_login(driver,1723693766728,ydgcdlcb)2、三层模型 基本的PO分层包括页面层与用例层但是在编写页面层代码时会发现一个问题页面中存在非常多相同 的操作方法比如都需要等待元素、获取元素属性/文本信息、页面滚动等等每个页面层类都需要有相 同的代码代码存在非常多冗余。我们可以把这些【公共】的页面操作方法给提取出来放到一个类中进 行维护其他的页面类共用该类中的操作方法即可通过继承实现。 UI自动化断言 断言是自动化测试不可缺少的部分当我们使用测试脚本对业务逻辑进行操作时需要检查交互操作之 后结果的正确性此时需要通过断言机制来进行验证。 Pytest测试框架内置丰富的断言通过assert语句即可常见的断言方法比较包括 比较相等 assert a b 比较大小大于/小于/大于等于/小于等于 assert a b 内容包含/内容不包含 assert a in b 验证表达式是否为真 assert condition UI自动化常见的断言条件包括 通过当前页面的URL地址 通过当前页面的标题通过当前页面的提示文本信息通过当前页面的某些元素变化/显示 一句话总结通过肉眼观察页面的变化检查 3、三层模型实战 思路抽取一个公共类这个类中可以写公共页面的属性和函数也可以写每次都要使用的属性从UI自动化的角度来看浏览器驱动是每次执行用例都会用到的所以也可以抽取出来。 三层模型的文件目录如下 base_page.py文件中的内容 import osfrom selenium.webdriver import ActionChains from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait# BasePage 用来存放所有页面类的公共部分一些公共的操作显式封装 class BasePage:def __init__(self,driver):self.driver driver# 封装的意思把相同类似的代码放到一个函数里面,重复使用# locator是元组的类型def wait_element_clickable(self, locator):web_element WebDriverWait(self.driver,5,0.5).until(EC.element_to_be_clickable(locator))return web_elementdef wait_element_visible(self, locator):# web_element代表通过显示等待找到的元素web_element WebDriverWait(self.driver,5,0.5).until(EC.visibility_of_element_located(locator))return web_elementdef wait_element_presence(self, locator):web_element WebDriverWait(self.driver,5,0.5).until(EC.presence_of_all_elements_located(locator))return web_element# JavaScript进行元素的滚动def page_scroll(self,distance):self.driver.execute_script(fdocument.documentElement.scrollTop{distance})# JavaScript进行元素的点击def page_js_click(self,locator):element self.wait_element_visible(self.driver,locator)self.driver.execute_script(arguments[0].click(),element)# JavaScript进行元素的移除def remove_element_attribute(self,locator,attribute):element self.wait_element_visible(self.driver,locator)self.driver.execute_script(farguments[0].removeAttribute({attribute}), element)# 鼠标点击def mouse_click(self,locator):element self.wait_element_visible(self.driver,locator)ActionChains(self.driver).click(element).perform()# 窗口切换def switch_to_window(self,title):handles self.driver.window_handlesfor handle in handles:if self.driver.title title:breakelse:self.driver.switch_to.window(handle)# 文件上传def update_file(self,filepath):os.system(ftest.exe {filepath}) home_page.py文件中的内容 import timefrom selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from PO模式优化与自动化用例断言.common.base_page import BasePageclass HomePage(BasePage):# 属性-登录链接login_link_locator (By.LINK_TEXT,登录)# 欢迎提示信息welcome_tips_locator (By.XPATH,//span[text()欢迎来到天使的世界])welcome_tips_text_locator (By.XPATH,//span[classtext])# 用户名username_text_locator (By.XPATH,//a[classlink-name])def click_login_link(self):self.wait_element_clickable(self.login_link_locator).click()def is_display_welcome_tips(self):time.sleep(2)# return self.wait_element_clickable(self.welcome_tips_locator).is_displayed()return self.wait_element_clickable(self.welcome_tips_text_locator).textdef get_username_text(self):return self.wait_element_visible(self.username_text_locator).text login_page.py文件中的内容  import timefrom selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from PO模式优化与自动化用例断言.common.base_page import BasePageclass LoginPage(BasePage):# 属性-元素定位信息元素定位方法元素定位值-元组类型phone_input_locator (By.XPATH, //input[placeholder请输入手机号/用户名])pwd_input_locator (By.XPATH, //input[placeholder请输入密码])login_button_locator (By.CLASS_NAME, login-button)login_tips_locator (By.XPATH, //p[classel-message__content])def login(self,phone,pwd):# 因为继承了 basepage类所以克不用再写driver参数# self.wait_element_visible(self.driver,self.phone_input_locator).send_keys(17728373518)self.wait_element_visible(self.phone_input_locator).send_keys(phone)self.wait_element_visible(self.pwd_input_locator).send_keys(pwd)self.wait_element_clickable(self.login_button_locator).click()time.sleep(3)def get_login_tips(self):# 这里比较文本内容return self.wait_element_visible(self.login_tips_locator).textprint(self.wait_element_visible(self.login_tips_locator).text) test_login.py文件中的内容 from selenium import webdriver from d7_PO模式优化与自动化用例断言.pageobjects.home_page import HomePage from d7_PO模式优化与自动化用例断言.pageobjects.login_page import LoginPagedef test_login_success():driver webdriver.Chrome()driver.get(http://mall.banan.com:3344/)driver.maximize_window()# 点击首页的登录操作homepage HomePage(driver)homepage.click_login_link()# 在登陆页面进行登录操作loginpage LoginPage(driver)loginpage.login(le_auto,le123456)# 断言检测测试是否成功通过预期结果和实际结果的比较# 检查点1、欢迎页,如果函数的返回值为True那么断言之后返回是通过的assert homepage.is_display_welcome_tips()# assert loginpage.get_login_tips() 账号或者密码不正确assert homepage.get_username_text() lemon_auto# 对登录结果的断言 def test_login_uncorrect_username():driver webdriver.Chrome()driver.get(http://mall.banan.com:3344/)homepage HomePage(driver)homepage.click_login_link()# 在登陆页面进行登录操作loginpage LoginPage(driver)loginpage.login(le_auto1, le123456)# 页面登录过程中的提示信息断言assert loginpage.get_login_tips() 账号或密码不正确 2、PO模式的优点 1、提高测试用例的可读性 2、提高测试用例可维护性 3、减少代码重复
http://www.w-s-a.com/news/323325/

相关文章:

  • 一 电子商务网站建设规划网站开发前端框架和后端框架
  • 自助网站建设系统软件自己免费建设网站
  • 百度微建站access如何与网站连接数据库
  • ppt素材免费网站网站正能量晚上免费软件
  • 个人淘宝客网站如何备案搭建一个平台要多少钱
  • nginx 网站建设淘客网站怎么做首页
  • 网站制作的基本步骤是手机网站建设 新闻
  • 水墨 网站源码工装
  • 任丘网站建设服务网站 建设原则
  • 长沙做一个网站要多少钱网站底部备案代码
  • wordpress构建自定义设置页面seo培训学什么
  • 延安有哪些做网站的公司如何建设网站?
  • 网站建设者属于广告经营者吗网站管理程序
  • 网站内容优化方法深圳市宝安区怎么样
  • 视频网站开发视频公司网站制作多少钱
  • 单页简洁手机网站模板购物软件
  • 素材网站官网低价网站建设费用预算
  • 苏州网站设计kgwl个人网站有什么外国广告做
  • 浙江省网站建设报价简单网站开发工具
  • 物流网站的建设wordpress电视直播插件下载
  • 简述网站开发流程青岛做网站建设价格低
  • 网站开发的业务需求分析杭州推广公司
  • 网站建设技术实现难点app开发需要哪些软件
  • 响水建设局网站做网站需要会哪些知识
  • 企业制作企业网站个人网站可以做百度竞价
  • 做网站找投资人wordpress 5 主题教程
  • 做国外网站汇款用途是什么wordpress图片主题晨曦
  • 网站设计跟网站开发区别为什么网站需要维护
  • m 的手机网站怎么做网络推广方式和方法
  • wordpress图片自动轮播插件seo门户网站建设