我有两个python脚本。在python1.py中,它通过我们的应用程序的入门部分,在python2.py中,它通过应用程序的其余部分。我的问题是,为了让python2工作,应用程序需要在python1.py结束的屏幕上。所以我正在寻找的是如何运行python1.py,然后运行python2.py,应用程序处于与python1相同的状态。
答案 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')
希望它有助于某人