iOS appium元素定位,封装时候使用MobileBy和By结合

本文主要探讨了在iOS Appium自动化测试中,如何有效地进行元素定位,并结合MobileBy和By进行综合封装,提升测试效率。通过实例说明了在iOS环境下,利用MobileBy的多种定位方式,如 accessibility_id、UIAutomation 等,以及如何与By配合,实现更灵活精准的元素查找。这对于自动化测试脚本的编写和维护具有重要意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS:

from selenium.webdriver.common.by import By
class MobileBy(By):
    IOS_PREDICATE = '-ios predicate string'
    IOS_UIAUTOMATION = '-ios uiautomation'
    IOS_CLASS_CHAIN = '-ios class chain'
    ANDROID_UIAUTOMATOR = '-android uiautomator'
    ANDROID_VIEWTAG = '-android viewtag'
    ANDROID_DATA_MATCHER = '-android datamatcher'
    ACCESSIBILITY_ID = 'accessibility id'
    IMAGE = '-image'
    CUSTOM = '-custom'

android:

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"

综合封装:

def find_element(self, *loc):
    try:
        # 元素可见时,返回查找到的元素;以下入参为元组的元素,需要加*
        WebDriverWait(self.driver, 30).until(lambda driver: driver.find_element(*loc).is_displayed())
        return self.driver.find_element(*loc)

    except selenium.common.exceptions.NoSuchElementException:
        # logging.warning('Can not find element: %s' % loc[1])
        self.log.myloggger('Can not find element: %s' % loc[1], flag=2)
        raise
    except selenium.common.exceptions.TimeoutException:
        self.log.myloggger('Can not find element: %s' % loc[1], flag=2)
        raise

def find_elements(self, *loc):
    try:
        WebDriverWait(self.driver, 30).until(lambda driver: driver.find_elements(*loc))
        return self.driver.find_elements(*loc)

    except selenium.common.exceptions.NoSuchElementException:
        # logging.warning('Can not find element: %s' % loc[1])
        self.log.myloggger('Can not find element: %s' % loc[1], flag=2)
        self.get_screenshot()
        raise
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值