在应用程序之间切换

Switch between apps

我有一个场景,我需要使用 Selenium 和 Appium 来切换应用程序。 我从浏览器开始,然后我需要从通知栏获取一些信息,然后切换回浏览器。 我设法独立完成每个过程。但现在我正在努力将其作为端到端流程来做。

我已经开始创建一个 webdriver 会话,但是当他第一个会话还在时我无法打开一个新会话 运行。问题是浏览器和 appium 有不同的会话。

呼叫一个
_driver = new AndroidDriver<AppiumWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180));

第二个

_webdriver = new RemoteWebDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180));

首先,通过将命令超时设置为较大的值,使用远程 webdriver 在浏览器中执行测试。然后将 sessionid 保存在文件中。然后在不退出浏览器的情况下关闭进程。 其次,您使用 appium 驱动程序执行测试并退出它 再次使用您保存在文件中的会话 ID 重新连接您的第一个会话..

如果你用node客户端就很简单了 获取sessionid:driver.getSessionId(); 附加到现有会话:driver.attach('your session id', function(err, capability){ });

如果您使用任何其他客户端语言,例如 java 或 c# 然后你必须覆盖 selenium 的执行方法以附加到现有会话

我设法做了需要做的事情。 我需要做的就是 运行 AndroidDriver 首先使用 Chrome appActivity 和 appPackage。

然后,使用 driver.Context = NATIVE_APP; 以使用 Android 的活动。 回到 chrome 也很容易。 driver.context = "WEBPAGE_1"; 此语法属于 C#。

要了解您当前使用的上下文,请使用此代码:

var Handledcontext=driver.Context.Tostring();

祝你好运,感谢大家的帮助。