欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > web自动化(七)POM设计模式

web自动化(七)POM设计模式

2025/2/24 21:18:10 来源:https://blog.csdn.net/will_net/article/details/140306668  浏览:    关键词:web自动化(七)POM设计模式

POM设计模式,即Page Object Model。UII自动化测试中,POM模式是一种设计思路,把每个页面当成一个对象。
POM模式的优点:
提供了页面元素操作和业务流程相分离的模式,使测试的代码结构比之前更加清晰,可读性强。
方便复用对象和方法,提高了代码的复用性

POM设计模式 四层架构:
1层:basepage 层 每个页面的相同的属性和方法
2层:pageobject 针对每个页面定义页面类 每个页面独有的属性和方法
3层:testcase层 用例层 处理业务逻辑
4层:testdata数据层

basepage 层

from demo.pagebase.page_base_drission import PageBaseDrission
from demo.pagebase.page_base_selenium import PageBaseSeleniumclass PageBase(PageBaseSelenium,PageBaseDrission):def __init__(self, web_driver,web_page):self.web_driver = web_driverself.web_page=web_page``````bash
from  DrissionPage import  WebPageclass PageBaseDrission:def __init__(self,web_page):self.web_page=web_pagedef input_d(self,loc,value):loc_sel=self.finde_ele_d(loc)loc_sel.clear()loc_sel.input(value)def click_d(self,loc):self.finde_ele_d(loc).click()def finde_ele_d(self,loc,timeout=10):self.web_page.wait.eles_loaded(loc)return self.web_page.ele(loc)
from  selenium import  webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class PageBaseSelenium:def __init__(self,web_driver):self.web_driver=web_driverdef input(self,loc,value):self.finde_ele(loc).send_keys(value)def click(self,loc):self.finde_ele(loc).click()def finde_ele(self,loc,timeout=10):WebDriverWait(self.web_driver,timeout=timeout).until(EC.presence_of_element_located(loc))return self.web_driver.find_element(*loc)

pageobject

import timefrom demo.pagebase.page_base import PageBase
from  DrissionPage.common import By as DBy
from selenium.webdriver.common.by import  By
class LoginPage(PageBase):url = "https://passport.jd.com/new/login.aspx"def login(self,loginname,password):self.web_driver.get(LoginPage.url)self.web_page.get(LoginPage.url)el = (By.ID, "loginname")self.input(el,loginname)el = (By.ID, "nloginpwd")self.input(el,password)el = (By.ID, "loginsubmit")self.click(el)time.sleep(15)el = (DBy.ID, "loginname")self.input_d(el, loginname)el = (DBy.ID, "nloginpwd")self.input_d(el, password)el = (DBy.ID, "loginsubmit")self.click_d(el)time.sleep(15)

testcase 层

import  unittestimport BeautifulReport
from  selenium import  webdriver
from demo.pageobject.login_page import LoginPage
from DrissionPage import WebPageclass TestLogin(unittest.TestCase):@classmethoddef setUpClass(cls):cls.web_driver = webdriver.Firefox()cls.web_page=WebPage("d")@classmethoddef tearDownClass(cls):cls.web_driver.quit()cls.web_page.quit()def test_login(self):login_name = "用户名"pwd = "密码"LoginPage(self.web_driver,self.web_page).login(loginname=login_name,password=pwd)
if __name__ == '__main__':case = unittest.TestLoader().loadTestsFromTestCase(TestLogin)BeautifulReport.BeautifulReport(case).report(description="测试报告",filename="report")

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词