Appium for Python 中的 launch_app() 替代方案

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

我正在真实设备上执行移动自动化。使用 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 

我尝试查看文档,但没有得到任何信息。我该如何解决它?

python appium python-appium
2个回答
0
投票

使用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 中启动应用程序的新推荐方法。

我希望这有帮助!


0
投票

您可以尝试:

self.driver.startActivity(".appPackage", ".appActivity")

它将把您的应用程序带到主线程。

© www.soinside.com 2019 - 2024. All rights reserved.