Appium:在测试之间保持会话活动

时间:2014-12-08 23:56:16

标签: python appium

我有两个python脚本。在python1.py中,它通过我们的应用程序的入门部分,在python2.py中,它通过应用程序的其余部分。我的问题是,为了让python2工作,应用程序需要在python1.py结束的屏幕上。所以我正在寻找的是如何运行python1.py,然后运行python2.py,应用程序处于与python1相同的状态。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用" noReset" python2.py中的Appium服务器的功能。

  

noReset在此会话之前不要重置应用程序状态。默认为false

如果在python2.py中设置noReset = true,则应该让应用程序处于python1.py离开它的状态。

点击此处了解详情:http://appium.io/slate/en/master/?python#appium-server-capabilities

答案 1 :(得分:0)

可能为时已晚。但我在这里粘贴我的解决方案。

from appium.webdriver.errorhandler import MobileErrorHandler
from appium.webdriver.switch_to import MobileSwitchTo    
from appium import webdriver

class MyWebDriverAppium(webdriver.Remote):    

    def __init__(self, command_executor='http://127.0.0.1:4444/wd/hub',
             desired_capabilities=None, session_id=None):
        self.preserved_session_id = session_id

        self.error_handler = MobileErrorHandler()
        self._switch_to = MobileSwitchTo(self)

        # add new method to the `find_by_*` pantheon
        By.IOS_UIAUTOMATION = MobileBy.IOS_UIAUTOMATION
        By.IOS_PREDICATE = MobileBy.IOS_PREDICATE
        By.ANDROID_UIAUTOMATOR = MobileBy.ANDROID_UIAUTOMATOR
        By.ACCESSIBILITY_ID = MobileBy.ACCESSIBILITY_ID
        super(MyWebDriverAppium, self).__init__(command_executor, desired_capabilities)

    def start_session(self, desired_capabilities, browser_profile=None):
        if self.preserved_session_id:
            self.command_executor._commands['getSession'] = ('GET', '/session/$sessionId')
            self.session_id = self.preserved_session_id
            response = self.execute('getSession', {'sessionId ': self.session_id})
            self.session_id = response['sessionId']
            self.capabilities = response['value']
            self.w3c = response['status']
        else:
            super(MyWebDriverAppium, self).start_session(desired_capabilities, browser_profile)

有了这个你在appium驱动程序创建他的selenium驱动程序时覆盖selenium session_id ...所以你有所有Appium功能与session_id相同

您可以将MyWebDriverAppium用于:

driver = MyWebDriverAppium('http://localhost:4723/wd/hub', self.desired_caps, 'ad6ba37d-4f37-4d11-ba55-15384bd06f5b')

希望它有助于某人