python用appium进行安卓测试时,find_elements_by_*提示没有这个方法的解决方案

这几天将python的运行库都更新了一下,结果发现用appium进行安卓测试时driver.find_elements_by_*类型的方法均无法使用,提示driver没有这个方法。查了一下原因,大概是Selenium 4.0不再支持find_elements_by_*方法,基于这个库之上的Appium-Python-Client自然也不再支持此类方法。

现在,appium只支持find_element(by,value)和find_elements(by,value)这两种定位方法,关键就在于by的值有哪些,通过阅读源代码,发现大概有两类,在这里整理一下。

第一类是继承Selenium库中的by值,在selenium.webdriver.common.by文件中,可以看到by值有以下几种:

class By:
    """
    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"

所以此时我们可以将原来的find_elements_by_*替换如下:

# 1.driver.find_element_by_id
driver.find_element("id","android:id/button2").click()

# 2. driver.find_element_by_xpath
driver.find_element("xpath",r'//android.widget.FrameLayout[@content-desc="文本"]').click()
# 以此类推......

第二类是appium封装其他库的接口(比如uiautomator2),在appium.webdriver.common.appiumby文件中,可以看到by值有以下几种:


from selenium.webdriver.common.by import By


class AppiumBy(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'
    ANDROID_VIEW_MATCHER = '-android viewmatcher'
    # Deprecated
    WINDOWS_UI_AUTOMATION = '-windows uiautomation'
    ACCESSIBILITY_ID = 'accessibility id'
    IMAGE = '-image'
    CUSTOM = '-custom'


使用方法也是一样的,比如:

# find_element_by_android_uiautomator
driver.find_element('-android uiautomator','new UiSelector().text("全部")').click()


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值