Exemple #1
0
    def _get_element_by_type(driver: webdriver.Remote, locator, element=True):
        """通过locator定位元素(默认定位单个元素)

        Args:
            driver:driver
            locator:定位器
            element:
                true:查找单个元素
                false:查找多个元素

        Returns:单个元素 或 元素list

        """
        value = locator['value']
        ltype = locator['type']

        if ltype == "id":
            value_id = re.findall("(id/.+)", value)[0]
            value = str(_package) + ":" + str(value_id)

        if ltype == 'name':
            ui_value = 'new UiSelector().textContains' + '(\"' + value + '\")'
            return driver.find_element_by_android_uiautomator(
                ui_value
            ) if element else driver.find_elements_by_android_uiautomator(
                ui_value)
        else:
            return driver.find_element(
                ltype, value) if element else driver.find_elements(
                    ltype, value)
Exemple #2
0
class APP(object):
    """
    APP页面基类
    """
    __metaclass__ = _APPMetaclass
    driver_share = {}
    driver = None
    command_executor = None
    desired_capabilities = None

    def __init__(self):
        self.LOGGER = logging.getLogger(self.__class__.__name__)
        if not self.driver_share.get('driver'):
            self.driver = Remote(
                self.command_executor,
                desired_capabilities=self.desired_capabilities)
            self.driver_share['driver'] = self.driver
        else:
            self.driver = self.driver_share['driver']  # type: Remote

    @classmethod
    def init(cls, command_executor=None, desired_capabilities=None):
        if command_executor:
            cls.command_executor = command_executor
        if desired_capabilities:
            cls.desired_capabilities = desired_capabilities

    def __getattr__(self, item):
        try:
            element = self.__elements__[item]
        except IndexError:
            raise ValueError(u'没找到要查找的变量')

        time.sleep(0.4)
        total_time, element_object = self.__find_element(element)
        self.LOGGER.info(u'查找%s元素共用时: %s秒' % (item, total_time))
        return element_object

    @fn_timer
    def __find_element(self, element):
        if len(element) == 2:
            return self.driver.find_element(*element)
        elif len(element) == 3 and element[-1] == 'elements':
            return self.driver.find_elements(*element[:2])
        else:
            raise TypeError(u'Element(s)不正确')

    def quit(self):
        try:
            self.driver.quit()
            self.driver_share['driver'] = None
        except:
            pass