PO各个核心要素的介绍

阿斌Elements 2020-05-05

先抽象封装一个BasePage类,这个基类拥有一些指向Webdriver实例的属性,然后每一个Page继承基类BasePage,可以通过driver管理每一个Page中的元素,而且在Page中将这些操作封装为一个一个的方法。也就是Process类。TestCase继承unittest里面的TestCase类,并且依赖page类,进行组织测试步骤的工作。

这样做的好处,就是有元素变化,只需要维护每一个Page就行了,测试步骤变化,只需要维护TestCase即可

基类封装一些常用的操作方法

基类BasePage类:

class BasePage(object):    def __init__(self,driver):        self.driver=driver    #浏览器的基本操作    def openurl(self,url):        self.driver.get(url)        Log.logsinfo(‘打开浏览器地址%s--success‘%url)    def waittime(self):        self.driver.implicitly_wait(60)    def setmaxbrowser(self):        self.driver.maximize_window()    def setmixbrowser(self):        self.driver.minimize_window()
#元素操作方法def click(self,element_info):    element=self.find_element(element_info)    element.click()    Log.logsinfo(‘【%s】进行点击--success‘%element_info[‘element_name‘])def input(self,element_info,content):    elment=self.find_element(element_info)    elment.send_keys(content)    Log.logsinfo(‘对【%s】输入内容【%s】--success‘%(element_info[‘element_name‘],content))def submit(self,element_info):    element=self.find_element(element_info)    element.submit()    Log.logsinfo(‘【%s】表单提交--success‘ % element_info[‘element_name‘])#页面布局操作方法def clear(self,element_info):    element=self.find_element(element_info)    element.clear()def switchframe(self,element_info):    element=self.find_element(element_info)    self.driver.switch_to.frame(element)    Log.logsinfo(‘切入框架--【%s】--success‘%element_info[‘element_name‘])def quitframe(self):    self.driver.switch_to.default_content()    Log.logsinfo(‘切回默认框架--success‘)#将滚动条滚到元素位置def scrollbarelement(self,element_info):    element = self.find_element(element_info)    self.driver.execute_script(‘arguments[0].scrollIntoView();‘,element)#selenium 执行脚本def deleteelementattribute(self,element_info,attribute_name):    element=self.find_element(element_info)    self.driver.execute_script(‘arguments[0].removeAttribute("%s");‘%attribute_name,element)def updateelementattribute(self,element_info,attribute_name,value):    element=self.find_element(element_info)    self.driver.execute_script(‘arguments[0].setAttribute("%s","%s");‘%(attribute_name,value),element)#Alert 操作def accept(self):    self.driver.switch_to.alert.accept()def dismiss(self):    self.driver.switch_to.alert.dismiss()def dismiss(self,contect):    self.driver.switch_to.alert.send_keys(contect)#鼠标操作def rightclick(self,element_info):    element=self.find_element(element_info)    ActionChains(self.driver).context_click(element).perform()def releasemouse(self):    ActionChains(self.driver).release().perform()def releasehover(self,element_info):    element=self.find_element(element_info)    ActionChains(self.driver).move_to_element(element).perform()Page类
class LoginPage(BasePage):    def __init__(self,driver):        super(LoginPage,self).__init__(driver)        element=GetElementInfoYaml().getelementinfo()        #获取元素定位信息        self.caotao_button=element[‘login_page‘][‘caotao_button‘]        self.username_inputbox=element[‘login_page‘][‘username_inputbox‘]        self.userpassword_inputbox=element[‘login_page‘][‘userpassword_inputbox‘]        self.login_button =element[‘login_page‘][‘login_button‘]    #调用父类方法    def clickzaotao(self):        self.click(self.caotao_button)    def inputusername(self,username):        self.input(self.username_inputbox,username)    def inputuserpassword(self,password):        self.input(self.userpassword_inputbox,password)    def clicklogin(self):        self.click(self.login_button)

Process类:

#登录方法def login(driver,url=getconfig.geturl,username=‘admin‘,password=‘a12345678‘):    driver=LoginPage(driver)    driver.openurl(url)    driver.inputusername(username)    driver.inputuserpassword(password)    driver.clicklogin()    return driverTestCase类:
#添加用户--正常添加用户测试def NormalUserCreation(dri):    #登录    loginin=login(dri)    #点击组织    home_info=OraganizationHomePage(dri)    home_info.click_organization_link()    #点击添加用户    user_info=OraganizationUserPage(dri)    user_info.click_adduser()    #进入添加用户表单    adduser_info=OraganizationUserAdduserPage(dri)    adduser_info.input_username_input(‘test‘ + str(num))    adduser_info.input_userpassword_input(‘a.123456‘)    adduser_info.input_repeatpassword_input(‘a.123456‘)    adduser_info.input_realname_input(‘测试‘ + str(num))    adduser_info.clear_entrydate_input()    adduser_info.input_entrydate_input(‘2020-04-26‘)    adduser_info.click_clickpage_clickt()    adduser_info.click_Jobchoice_click()    adduser_info.click_rightsgroup_selected_click()    adduser_info.click_rightsgroup_click()    adduser_info.input_email_input(‘50534‘ + str(num) + ‘@qq.com‘)    adduser_info.input_codeaccount_input(str(num))    adduser_info.click_gender_button()    adduser_info.clear_passwordchecking_input()    adduser_info.input_passwordchecking_input(‘a12345678‘)    adduser_info.scroll_scrollbarelement()    adduser_info.click_save_button()

相关推荐