【问题标题】:Switch between apps在应用程序之间切换
【发布时间】:2016-05-17 03:11:27
【问题描述】:

我有一个场景,我需要使用 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));

【问题讨论】:

  • 如果您想同时使用两个驱动程序Uriport。一种方法是:_driver = new AndroidDriver&lt;AppiumWebElement&gt;(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180)); // Perform the action with the browser here _driver.quit(); _webdriver = new RemoteWebDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180)); //Perform the action with the notification bar here _webdriver.quit();
  • @guy 你的解决方案可能有问题,因为我需要在浏览器会话期间滚动通知栏,或者至少在从通知栏获取我需要的信息后返回浏览器。跨度>
  • @YanivEliav 我没有给你任何解决方案,只是编辑了问题。
  • 对不起,我的意思是@nullpointer

标签: android selenium appium


【解决方案1】:

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

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

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

【讨论】:

  • 不幸的是,建议的解决方案都没有奏效。令人沮丧。
【解决方案2】:

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

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

要知道您当前使用的是哪个上下文,请使用以下代码:

var Handledcontext=driver.Context.Tostring();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多