我正在尝试使用 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 类型,但我不知道在哪里。
通过在 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