AttributeError:“NoneType”对象没有属性“to_capability”。在 Appium 上运行 python 脚本时出现此错误

问题描述 投票:0回答:1
import unittest
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

capabilities = dict(
    platformName='Android',
    automationName='uiautomator2',
    deviceName='Samsung S9',
    appPackage='com.android.settings',
    appActivity='.Settings',
    language='en',
    locale='US'
)

appium_server_url = 'http://localhost:4723'

class TestAppium(unittest.TestCase):
    def setUp(self) -> None:
        self.driver = webdriver.Remote(appium_server_url, capabilities)

    def tearDown(self) -> None:
        if self.driver:
            self.driver.quit()

    def test_find_battery(self) -> None:
        el = self.driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Battery"]')
        el.click()

if __name__ == '__main__':
    unittest.main()

上面是来自Appium官方网站的示例代码(http://appium.io/docs/en/2.1/quickstart/test-py/),我已经安装了所有必需的先决条件,但仍然得到了当我运行 python 文件时出现以下错误:

C:\Users\syeda\Desktop>python test.py
E
======================================================================
ERROR: test_find_battery (__main__.TestAppium.test_find_battery)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\syeda\Desktop\test.py", line 19, in setUp
    self.driver = webdriver.Remote(appium_server_url, capabilities)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\syeda\AppData\Local\Programs\Python\Python311\Lib\site-packages\appium\webdriver\webdriver.py", line 229, in __init__
    super().__init__(
  File "C:\Users\syeda\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 185, in __init__
    capabilities = options.to_capabilities()
                   ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'to_capabilities'

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)

我确保 Appium 服务器正在运行。

我不确定为什么会发生这种错误。我尝试在网上搜索但没有成功。

python selenium-webdriver appium
1个回答
0
投票
import unittest
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

# Import Appium UiAutomator2 driver for Android platforms (AppiumOptions)
from appium.options.android import UiAutomator2Options

capabilities = dict(
    platformName='Android',
    automationName='uiautomator2',
    deviceName='Samsung S9',
    appPackage='com.android.settings',
    appActivity='.Settings',
    language='en',
    locale='US'
)

appium_server_url = 'http://localhost:4723'

# Converts capabilities to AppiumOptions instance
capabilities_options = UiAutomator2Options().load_capabilities(capabilities)

class TestAppium(unittest.TestCase):
    def setUp(self) -> None:
        self.driver = webdriver.Remote(command_executor=appium_server_url,options=capabilities_options)

    def tearDown(self) -> None:
        if self.driver:
            self.driver.quit()

    def test_find_battery(self) -> None:
        el = self.driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Battery"]')
        el.click()

if __name__ == '__main__':
    unittest.main()
© www.soinside.com 2019 - 2024. All rights reserved.