zoukankan      html  css  js  c++  java
  • Appium公共方法封装

     

         最近在研究Appium+python写Android自动化测试脚本,之前用过selenium+python写web的自动化测试脚本,在此基础上修改。

          还是使用POM,一个page页面对应一个test_case,base页面封装一些公共方法。封装的一个查找元素的公共方法:

        def find_element(self, *loc):
            try:
                WebDriverWait(self.driver,10,0.5).until(EC.visibility_of_element_located(loc))
                return self.driver.find_element(*loc)
            except AssertionError as e:
                self.driver.close()

       *loc表示这是一个元组对象。

       之前使用selenium写page页面调用该方法查找元素,例如:

       login_username_loc = (By.XPATH, 'XXX')

       el = self.find_element(*self.login_button_loc)

        Appium的webdriver中新增了一些查找元素方法,我要通过accessibility_id查找元素,find_element_by_accessibility_id方法。但是selenium的selenium.webdriver.common.by中没有accessibility_id,如下所示,只有:ID、XPATH、LINK_TEXT、PARTIAL_LINK_TEXT、NAME、TAG_NAME、CLASS_NAME、CSS_SELECTOR。

         class By(object):
        """
        Set of supported locator strategies.
        """

        ID = "id"
        XPATH = "xpath"
        LINK_TEXT = "link text"
        PARTIAL_LINK_TEXT = "partial link text"
        NAME = "name"
        TAG_NAME = "tag name"
        CLASS_NAME = "class name"
        CSS_SELECTOR = "css selector"

        查找appium中的webdriver发现,新增的appium.webdriver.common.mobileby有个MobileBy对象,这是对by对象的一个扩展。

         所以可以通过MobileBy来定位对象:

        login_button_loc = (MobileBy.ACCESSIBILITY_ID, '登录')

        el = self.find_element(*self.login_button_loc)

        这样就避免了重新封装公共方法,还可以通过之前的公共方法来定位元素。

  • 相关阅读:
    DB2 关联更新
    postgresql 开启审计日志
    Delphi D10.X中Tpath引发的单元引用及代码编写的思考
    自己写的函数或者过程与Delphi提供的重名了怎么办?(50分)
    技巧四 Delphi XE3 代码自动提示bug解决
    想开发经典界面吗?
    初涉Delphi下Windows消息机制——同一程序内自定义消息实例
    Delphi的DirectShow开发概述
    delphi接口(抄自万一)
    fkInternalCalc和fkCalculated有何区别?
  • 原文地址:https://www.cnblogs.com/d-d-w/p/9315670.html
Copyright © 2011-2022 走看看