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)

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

  • 相关阅读:
    Java学习笔记——动态代理
    Java学习随笔——RMI
    数据结构与算法——排序算法
    设计模式——装饰者模式
    Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法
    vs中debug的一个小技巧 -- debug时忽略某段代码
    SilverlightMVVM模式中的数据校验
    技能图谱
    MQ队列管理器损坏的处理方法
    informix数据库锁表处理方法
  • 原文地址:https://www.cnblogs.com/d-d-w/p/9315670.html
Copyright © 2011-2022 走看看