PageObject设计模式(appium)

2020-03-08  本文已影响0人  清水秋香
PO设计规范
页面类的设计

书写PO模式建议:
1.先写出具体的业务逻辑--比如登录
2.再将写好的逻辑封装到类里面
3.继续构造其他的页面类
4.将这些类共同的功能抽象化父类,被其他业务类继承
5.可以将代码内部的具体元素抽离出来用外部的配置文件进行管理

from appium import webdriver
class BasePage:
    def __init__(self, desiredCaps):
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", desiredCaps)
        self.driver.implicitly_wait(10)

    def click_element(self, locator):
        self.driver.find_element(locator[0], locator[1]).click()

    def text(self, locator):
        return self.driver.find_element(locator[0], locator[1]).text
class HomePage(BasePage):
    def __init__(self, desiredCaps):
        BasePage.__init__(self, desiredCaps)
        homePage = conf_read('conf.yml')['homePage']
        self.three = homePage['three']
        self.add = homePage['add']
        self.nine = homePage['nine']
        self.equal = homePage['equal']
        self.take = homePage['take']
        self.five = homePage['five']
        self.clickResult = homePage['clickResult']
        self.result = homePage['result']

    def calculate(self):
        time.sleep(10)
        self.click_element(self.three)
        self.click_element(self.add)
        self.click_element(self.nine)
        self.click_element(self.equal)
        self.click_element(self.take)
        self.click_element(self.five)
        self.click_element(self.equal)
        self.click_element(self.clickResult)
        assert self.text(self.result) != 60, '计算有误'

    def driver_quit(self):
        self.driver.quit()
import yaml


def conf_read(conf_file):
    with open(conf_file, 'r') as f:
        file = f.read()
        conf = yaml.load(file)
        return conf


if __name__ == '__main__':
    print(conf_read('xxx.yml')['desired_caps'])

desiredCaps:
  automationName: "UiAutomator2"
  platformName: "Android"
  plathformVersion: "8"
  deviceName: "test0106"
  appPackage: "com.ibox.calculators"
  appActivity: ".SplashActivity"
  noReset: True
  newCommandTimeout: 6000


homePage:
  three: ['xpath','//*[@resource-id="com.ibox.calculators:id/digit3"]']
  add: ['xpath','//*[@resource-id="com.ibox.calculators:id/plus"]']
  nine: ['xpath','//*[@resource-id="com.ibox.calculators:id/digit9"]']
  equal: ['xpath','//*[@resource-id="com.ibox.calculators:id/equal"]']
  take: ['xpath','//*[@resource-id="com.ibox.calculators:id/mul"]']
  five: ['xpath','//*[@resource-id="com.ibox.calculators:id/digit5"]']
  clickResult: ['xpath','//*[@resource-id="com.ibox.calculators:id/relativeLayout_top"]']
  result: ['xpath','//*[@resource-id="com.ibox.calculators:id/cv"]/android.widget.TextView[2]']
上一篇下一篇

猜你喜欢

热点阅读