码迷,mamicode.com
首页 > 其他好文 > 详细

自动化设计之POM初识

时间:2020-06-06 00:59:14      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:import   图片   模型   函数   代码冗余   imp   alt   from   自动化   

自动化设计模式

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初识

标签:import   图片   模型   函数   代码冗余   imp   alt   from   自动化   

原文地址:https://www.cnblogs.com/JacquelineQA/p/13052925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!