before_scenario 中的 HOOK-ERROR:AttributeError:“NoneType”对象没有属性“to_capability”

问题描述 投票:0回答:1

我正在尝试使用 Behave 和 Appium 编写这个测试框架。

我已经得到了这个带有 setup_android_driver 的固定文件,它不断返回错误

@fixture
def setup_android_driver(context):
    print('this is a fixture for android driver')
    context.android_driver = initialize_android_driver()
    yield context.android_driver
    context.android_driver.quit()

我的initialize_android_driver在我的appium_driver.py文件中被引用,如下所示:

def initialize_android_driver():
    print(desired_caps_android)
    return webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps_android)

我的desired_caps_android在我拥有的真实设备的配置文件中正确定义,因为我正在测试该值以在初始化期间正确打印出来。

我的 before_scenario 在我的environment.py 文件中,如下所示:

def before_scenario(context, scenario):
    print('this is before scenario')
    if 'iOS' in scenario.tags:  # You can use tags to identify iOS scenarios
        context.ios_driver = setup_ios_driver
    else:
        context.android_driver = setup_android_driver  # Make sure this step is performed
        # Register the setup_android_driver fixture
        use_fixture(setup_android_driver, context)
        # Now you can access the Android driver in your step definitions using 'context.android_driver'.

我在想我想要的功能在某个地方被转换为 None 类型,但我不知道在哪里。

python cucumber appium python-behave
1个回答
0
投票

通过在 UiAutomator2Options 中使用 load_capability 并在其中传递我的大写字母解决了这个问题。请参阅此处

    def initialize_android_driver():
    appium_server_url = 'http://localhost:4723/wd/hub'

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

    return webdriver.Remote(command_executor=appium_server_url, options=capabilities_options)

但是当我启动我的 appium 服务器时,我不断收到另一个错误

 [debug] [HTTP] No route found for //session

我通过启动 appium 服务器解决了这个问题,请参阅 here

 appium --base-path /wd/hub
© www.soinside.com 2019 - 2024. All rights reserved.