startActivity() gives attribute error Appium-Python-Client v3.0.0

class MyApp:
    def __init__(self,device_name: str = DEVICE_NAME, environment: str = DEFAULT_ENVIRONMENT) -> None:
        environments                                               = {"Staging": ".staging", "Production":"", "Dev":".dev"}
        self.envPackageSuffix                                      = environments.get(environment,environments[DEFAULT_ENVIRONMENT])
        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}{self.envPackageSuffix}' #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)
        self.driver.start_activity(desiredCapabilities["appium:appPackage"],desiredCapabilities["appium:instrumentApp"])

I am getting AttributeError: 'WebDriver' object has no attribute 'start_activity'

But according to the docs this is supported.

Please help.

this document is out of date. Use https://github.com/appium/appium-uiautomator2-driver#mobile-startactivity instead

@mykola-mokhnach I tried:

self.driver.startActivity(desiredCapabilities["appium:appPackage"],desiredCapabilities["appium:instrumentApp"])

But i am getting AttributeError: 'WebDriver' object has no attribute 'startActivity'

My UiAutomator2 driver version is 2.25.1

Any update on this? I am also getting same error

Traceback (most recent call last):
File “/home/wireless/Documents/Latte/src/1.py”, line 106, in
print(test_devices.devices[‘phone1’][‘dev’].generic(app_package=_app_package, app_activity=_app_activity, sequence_lst=_sequence_lst))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/home/wireless/Documents/Latte/src/latte/devices/appium/init.py”, line 848, in generic
status, items = self._generic_sequence(_app_package, _app_activity, _sequence_lst,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/home/wireless/Documents/Latte/src/latte/devices/appium/init.py”, line 860, in _generic_sequence
status, items = self._run_sequence(_sequence, _app_package, _app_activity,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/home/wireless/Documents/Latte/src/latte/devices/appium/init.py”, line 889, in _run_sequence
self._connect_webdriver(secure_activity=secure_activity, launch_activity=launch_activity)
File “/home/wireless/Documents/Latte/src/latte/devices/appium/init.py”, line 1024, in _connect_webdriver
self._driver.startActivity(app_package, app_activity)
^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: ‘WebDriver’ object has no attribute ‘startActivity’. Did you mean: ‘wait_activity’?
^CException ignored in: <module ‘threading’ from ‘/home/wireless/miniconda/envs/Latte/lib/python3.11/threading.py’>
Traceback (most recent call last):
File “/home/wireless/miniconda/envs/Latte/lib/python3.11/threading.py”, line 1583, in _shutdown

Are you moving from Python Client 2 to 3? If so this will help:

I am new to appium and not sure how to use this mobile:startActivity.

My previous code was with python was like below

if secure_activity:
if secure_activity:
                        self._driver.start_activity(
                            app_package,
                            app_activity,
                            app_wait_activity=secure_activity
                        )
                    else:
                        self._driver.start_activity(app_package, app_activity)
                    logger.debug("Appium Server Re-connection Time: %s", time.time()-start_time)

I’m always a big fan of looking at the tests in the source code to see how some code snippet is used. Here are the activities_tests.py: