You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Appium代码报错TypeError: 'str' object is not callable求助

解决Appium中TypeError: 'str' object is not callable错误

错误原因

触发该错误的直接原因是错误将AppiumBy.CLASS_NAME当作方法调用。AppiumBy.CLASS_NAME是一个字符串常量(值为"class name"),并非可调用函数,你用AppiumBy.CLASS_NAME('android.widget.TextView')的写法,相当于把字符串当成函数执行,自然会抛出str object is not callable的错误。

另外代码还有一个基础语法错误:函数定义def invoke android(self):的函数名包含空格,不符合Python语法规范,会直接导致代码无法运行。

修正方案

  1. 调整元素定位写法:find_elements方法需要传入两个参数——定位策略和定位值,正确写法是把AppiumBy.CLASS_NAME作为第一个参数,定位值作为第二个参数传入。
  2. 修正函数命名:将带空格的函数名改为合法名称,比如invoke_android。

完整修正后的代码

def invoke_android(self):
    caps = {
        "platformName": "Android",
        "platformVersion": "11.0",
        "deviceName": "Pixel 5 Emulator",
        "appPackage": "com.android.settings",
        "appActivity": "com.android.settings.Settings"
    }

    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
    time.sleep(3)
    # 修正定位方式
    links = driver.find_elements(AppiumBy.CLASS_NAME, 'android.widget.TextView')

    for link in links:
        print(link.text)
        if link.text == "Network & internet":
            link.click()

    time.sleep(4)
    driver.quit()

补充说明

如果你的代码导入的是selenium.webdriver.common.by.By而非AppiumBy,写法逻辑完全一致:driver.find_elements(By.CLASS_NAME, 'android.widget.TextView'),效果相同。

内容的提问来源于stack exchange,提问作者Ramesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:27:26