如何使用appium从已打开的活动启动Android应用程序

时间:2016-01-19 13:18:13

标签: java android appium

我有两个测试用例: -

测试案例1: - 在Android应用程序上使用凭据登录并到达主屏幕。

测试案例2: - 当我启动应用程序时,应显示主页而不询问登录屏幕。

问题: - 当我执行appium脚本时,它会启动带有登录屏幕的应用程序并到达主屏幕。但是当我再次使用测试用例2执行脚本时,它会再次从登录屏幕启动。我已经在使用No Reset选项。

我需要它应该从主屏幕活动启动。无论何时我都会在某些活动中得到错误,它应该在同一活动上启动而不是从头开始。

实际上问题是当我运行appium功能时,它从一开始就启动应用程序,而我需要它应该来自现有活动。怎么可能?

有人可以帮我吗?

此致 拉夫

4 个答案:

答案 0 :(得分:0)

你能分享一下你的试卷吗? 您是否在代码中的某个地方使用driver.close(),例如@AfterTest,如果是,您可以对此进行评论并尝试。

@BeforeTest
public void setup()
{
    //your setup logic
}

@Test
public void busiLogic()
{
    //business logic
}

@AfterTest
public void tearDown()
{
    //dont put driver.close()
}

这是我假设你在testcript代码中关闭驱动程序。请发布您的代码。 Thanks

答案 1 :(得分:0)

当您使用@BeforeTest@AfterTest时,您正在使用@BeforeClass@AfterClass

他们按照他们对锡的说法行事。如果您在 appiumDriver 中初始化@BeforeTest,则会在每次测试 之前启动新会话。如果您使用 driver.close() 中的driver.quit()AfterTest关闭/退出会话,则 之后 它将被拆除,不会出现在下一次测试中。

改为使用@BeforeClass@AfterClass

您可以设置@priority系统,以确保按特定顺序完成测试。 Documentation here

希望这有帮助,

利安

答案 2 :(得分:0)

请分享您对以下代码的看法:

公共类Test1 {

WebDriver博士;

DesiredCapabilities capabilities;

@Test
public void testapp() throws MalformedURLException, InterruptedException {




    File app = new File("D:\\Appium_Automation\\abc.apk");
    capabilities= new DesiredCapabilities();
    capabilities.setCapability("browserName", "");
    capabilities.setCapability("deviceName","samsung-sm_n910g-641dd802");
    capabilities.setCapability("platformVersion","5.0.1");
    capabilities.setCapability("platformName","Android");
    capabilities.setCapability("app",app.getAbsolutePath());
    capabilities.setCapability("apppackage","com.sk.test");
    capabilities.setCapability("appActivity","com.fp.test.test");
    dr = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
    dr.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);


}   

public class Test2 {

@Test
public void method1() throws MalformedURLException, InterruptedException {



    //Few line Code


}

公共课Test3 {

@Test
public void method1() throws MalformedURLException, InterruptedException {


    //Few line Code

}   

第一次,我运行了2个类(Test1和Test2),它完美地完成了套件。脚本状态通过。

第二次或运行第二个套件,我想运行Test3类,因此它需要运行Class“Test1”,但我希望应用程序不应该重新启动,它应该与之前打开的活动一起出现。

请告诉我在第二次运行时应该在Class Test1中进行哪些更改,或者需要对appium settimng进行任何更改。我正在使用“无重置”选项

答案 3 :(得分:0)

capabilities.setCapability("appActivity","com.fp.test.test");

这是因为每次使用此活动启动您的应用程序时,概率就像这是您的应用程序中的第一个活动(登录屏幕),无论何时您请求应用程序,它将打开登录屏幕,同样尝试查找活动,在第一次/登录活动之后,您可以使用此应用'https://play.google.com/store/apps/details?id=com.intelloware.apkinfo&hl=en'