2016-02-07 68 views
3

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

如果你想在同一个'Uri'和'port'上使用两个驱动程序。一种方法是: '_driver = new AndroidDriver (new Uri(“http://127.0.0.1:4723/wd/hub”),capabilities,TimeSpan.FromSeconds(180)); //在此处使用浏览器执行操作 _driver.quit(); _webdriver = new RemoteWebDriver(new Uri(“http://127.0.0.1:4723/wd/hub”),capabilities,TimeSpan.FromSeconds(180)); //通过此处的通知栏执行操作 _webdriver.quit();' – nullpointer

+0

@guy 由于我需要在浏览器会话期间滚动通知栏,或者至少返回浏览器,因此您的解决方案可能会有问题从通知栏获取我需要的信息后。 –

+0

@YanivEliav我没有给你任何解决方案,只是编辑了问题。 – Guy

回答

1

我能够做到什么需要。 我需要做的就是先用Chrome appActivity和appPackage运行AndroidDriver。

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

才能知道当前正在使用的情况下,使用此代码:

var Handledcontext=driver.Context.Tostring(); 

好运,感谢大家的努力帮助我。

0

首先,你在浏览器中使用远程的webdriver通过设置命令超时大value..then保存会话ID在执行测试一个file..then关闭过程不退出浏览器.. 第二你使用appium driver..and退出它 再次重新连接您与您的文件中保存的SessionID第一届执行测试..

如果您使用节点客户端,那么它非常容易 获取sessionid:driver.getSessionId(); 要附加到现有会话:driver.attach('您的会话ID',函数(err,capability){ });

如果您使用的是像Java或C# 任何其他客户端语言然后,你必须重写执行硒的方法附加到现有会话

+0

不幸的是没有任何解决方案建议工作。令人沮丧的。 –

相关问题