自动化设计之POM初识
Posted jacquelineqa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化设计之POM初识相关的知识,希望对你有一定的参考价值。
自动化设计模式
1.关键字驱动:将selenium进行二次封装,为用户自定义关键字,基于关键字,结合数据驱动的形式实现自动化测试的执行。
2.POM:页面对象模型,将所有页面全部列举,形成页面对象库,将核心流程要操作的元素与操作行为进行封装与管理,可以对系统的页面进行精准的操作,保障了自动化测试的成功率。
编程思想
测试编码规范:低耦合,高内聚(模块的独立性增强,模块与模块之间的关联性减弱)
3.实现了架构的分层:
基类,页面对象类,测试类,测试数据类
4.自动化的问题:1,阅读性差 2.维护性差 3,代码冗余 4.解决团队自动化设计构建的问题
5.举例代码:
POM 实现百度搜索和京东登录2个页面
创建如下包和文件
6.基类base代码如下:
from selenium import webdriver
from time import sleep
#基类:在所有页面中,一些公共的内容需要执行,
# 1,定位元素,2,启动浏览器,访问url 3,关闭浏览器,释放资源
class BasePage(object):
# driver=webdriver.Chrome()
#构造函数
def __init__(self,driver,url):
self.driver=driver
self.url=url
#定位元素:要对定位的元素进行操作,需要return
def locator(self,loc):
return self.driver.find_element(*loc)
#访问url
def open(self):
self.driver.get(self.url)
#释放资源
def quit(self):
sleep(2)
self.driver.quit()
7.百度搜索文件代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from base_page.base import BasePage
#百度搜素页面对象:实现百度的搜索流程
#1.获取元素流程相关联的元素(输入框,按钮)
#2.将元素操作进行定义(输入,点击)
class SearchPage(BasePage):
#获取关联元素
input_el=(By.ID,"kw")
click_el=(By.XPATH,‘//input[@id="su"]‘)
#页面url
url=‘http://www.baidu.com‘
#元素操作进行封装
def input_text(self,txt):
self.locator(self.input_el).send_keys(txt)
def click(self):
self.locator(self.click_el).click()
#测试代码
def test_search(self,txt):
self.open()
self.input_text(txt)
self.click()
self.quit()
if __name__ == ‘__main__‘:
driver=webdriver.Chrome()
txt="just a test"
sp = SearchPage(driver,SearchPage.url)
sp.test_search(txt)
8.京东登录代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from base_page.base import BasePage
from page_object.search_page import SearchPage
from time import sleep
class LoginPage(BasePage):
#元素获取
username=(By.XPATH,‘//*[@name="loginname"]‘)
pwd=(By.XPATH,‘//*[@name="nloginpwd"]‘)
login_el=(By.XPATH,‘//*[@id="loginsubmit"]‘)
#指定url
url=‘https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F‘
#元素操作
def input_username(self,un):
self.locator(self.username).send_keys(un)
def input_pwd(self,pwd):
self.locator(self.pwd).send_keys(pwd)
def click(self):
self.locator(self.login_el).click()
def login(self,un,pwd):
self.open()
sleep(10)#手动点击账户登录
self.input_username(un)
self.input_pwd(pwd)
sleep(10)#手动处理验证码
self.click()
self.quit()
if __name__ == ‘__main__‘:
driver=webdriver.Chrome()
username=‘*****‘
pwd=‘*****‘
sp=SearchPage(driver,SearchPage.url)
lp=LoginPage(driver,LoginPage.url)
lp.login(username,pwd)
脚本还可以进行优化和进行修改,可以同时运行2个不同的页面操作,放在一个脚本里,后续更新。
以上是关于自动化设计之POM初识的主要内容,如果未能解决你的问题,请参考以下文章
python+selenium搭建自动化框架框架设计中的一种设计思想--POM
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段