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

执行Appium测试脚本时出现AttributeError: can't set attribute错误求助

Appium脚本执行报错:AttributeError: can't set attribute

执行以下Appium自动化测试脚本时触发错误,已确认Appium Server已启动:

import time
import ScrollUtil

from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['deviceName'] = 'Android'
desired_caps['appPackage'] = 'com.samsung.android.dialer'
desired_caps['appActivity'] = 'com.samsung.android.dialer.DialtactsActivity'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(10)
ScrollUtil.swipeUp(4,driver)
ScrollUtil.swipeDown(4,driver)
# driver.find_element_by_android_uiautomator(
#     'new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains("Akash").instance(0))').click()

time.sleep(2)
driver.quit()

报错信息

self.capabilities = response.get('value')
AttributeError: can't set attribute

错误截图

解决方法

这个错误大多是Appium Python客户端与Selenium版本不兼容导致——新版Selenium将capabilities设为只读属性,旧版Appium客户端仍尝试修改该属性。

  • 调整依赖版本:
    要么降级Selenium到4.3.0及以下版本,要么升级Appium Python客户端至最新兼容版本,执行对应命令:

    # 降级Selenium
    pip uninstall selenium -y
    pip install selenium==4.3.0
    
    # 或升级Appium客户端
    pip install --upgrade Appium-Python-Client
    
  • 改用Options对象初始化Driver:
    针对新版Selenium,推荐使用UiAutomator2Options替代传统desired_caps传参,示例代码如下:

    import time
    import ScrollUtil
    
    from appium import webdriver
    from appium.options.android import UiAutomator2Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    options = UiAutomator2Options()
    options.platform_name = 'Android'
    options.device_name = 'Android'
    options.app_package = 'com.samsung.android.dialer'
    options.app_activity = 'com.samsung.android.dialer.DialtactsActivity'
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', options=options)
    driver.implicitly_wait(10)
    ScrollUtil.swipeUp(4,driver)
    ScrollUtil.swipeDown(4,driver)
    
    time.sleep(2)
    driver.quit()
    
  • 检查ScrollUtil模块:
    确保自定义的ScrollUtil模块未调用已废弃的Selenium/Appium属性或方法,避免引发额外兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:33:36