我正在真实设备上执行移动自动化。使用 Appium 2.0,我在启动应用程序时遇到问题,因此每次运行时我都使用
launch_app()
方法来硬启动它。
但是使用最新的 Appium-Python-Client (v3.0.0)
launch_app()
方法已被弃用。
如果没有
launch_app()
,我的应用程序很少启动。以下是我的代码供参考。
class MyAPP:
@log
def __init__(self,device_name:str=DEVICE_NAME, environment:str=DEFAULT_ENVIRONMENT)->None:
self.environment = environment
envPackage = '.staging' if environment=="Staging" else ''
desiredCapabilities = {}
desiredCapabilities["appium:deviceName"] = device_name
desiredCapabilities["appium:automationName"] = AUTOMATION_NAME
desiredCapabilities["appium:platformName"] = PLATFORM_NAME
desiredCapabilities["appium:platformVersion"] = ANDROID_VERSION
desiredCapabilities["appium:appPackage"] = f'{APP_PACKAGE}{envPackage}' #APP_PACKAGE
desiredCapabilities["appium:appActivity"] = APP_ACTIVITY
desiredCapabilities["appium:instrumentApp"] = True
desiredCapabilities["appium:ensureWebviewsHavePages"] = True
desiredCapabilities["appium:nativeWebScreenshot"] = True
desiredCapabilities["appium:newCommandTimeout"] = NEW_COMMAND_TIMEOUT
desiredCapabilities["appium:connectHardwareKeyboard"] = True
desiredCapabilities["appium:noReset"] = True
options = UiAutomator2Options()
options.load_capabilities(desiredCapabilities)
# starting session based on set capabilities
self.driver = webdriver.Remote(SERVER_URL, options=options)
# hard launch app
self.driver.launch_app() #### deprecated
我尝试查看文档,但没有得到任何信息。我该如何解决它?
使用Appium-Python-Client v3.0.0,您可以使用以下代码:
import logging
from appium import webdriver
from appium.options.uiautomator2 import UiAutomator2Options
class MyAPP:
@logging.log
def __init__(self, device_name: str=DEVICE_NAME, environment: str=DEFAULT_ENVIRONMENT)->None:
self.environment = environment
envPackage = '.staging' if environment=="Staging" else ''
desiredCapabilities = {}
desiredCapabilities["appium:deviceName"] = device_name
desiredCapabilities["appium:automationName"] = AUTOMATION_NAME
desiredCapabilities["appium:platformName"] = PLATFORM_NAME
desiredCapabilities["appium:platformVersion"] = ANDROID_VERSION
desiredCapabilities["appium:appPackage"] = f'{APP_PACKAGE}{envPackage}' #APP_PACKAGE
desiredCapabilities["appium:appActivity"] = APP_ACTIVITY
desiredCapabilities["appium:instrumentApp"] = True
desiredCapabilities["appium:ensureWebviewsHavePages"] = True
desiredCapabilities["appium:nativeWebScreenshot"] = True
desiredCapabilities["appium:newCommandTimeout"] = NEW_COMMAND_TIMEOUT
desiredCapabilities["appium:connectHardwareKeyboard"] = True
desiredCapabilities["appium:noReset"] = True
options = UiAutomator2Options()
options.load_capabilities(desiredCapabilities)
# starting session based on set capabilities
self.driver = webdriver.Remote(SERVER_URL, options=options)
# start the app
self.driver.start_activity(desiredCapabilities["appium:appPackage"], desiredCapabilities["appium:appActivity"])
主要变化是使用start_activity()方法而不是launch_app()方法。 start_activity() 方法是在 Appium-Python-Client v3.0.0 中启动应用程序的新推荐方法。
我希望这有帮助!
您可以尝试:
self.driver.startActivity(".appPackage", ".appActivity")
它将把您的应用程序带到主线程。