while using driver.launchApp(); my app is re-installed every time. So how can I prevent this ?

在使用driver.launchApp();我的应用每次都会重新安装。那么我该如何预防呢?

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
    capabilities.setCapability(CapabilityType.VERSION, Android_Version);
    capabilities.setCapability(CapabilityType.PLATFORM, "Android");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("deviceName", DeviceName);
    capabilities.setCapability("app", app.getAbsolutePath());
    capabilities.setCapability("app-package", app_package);
    capabilities.setCapability("app-activity", app_activity);

    try{
        driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        APP_LOGS.info("Appium driver is initialized!!");
        driver.closeApp();
       }

IN My Test Cases

在我的测试用例

@Test
public void Test2()
{
   driver.launchApp();
    System.out.println("this is second test in appium suite");
    driver.closeApp();
}

1 个解决方案

#1


5

There are one or more things you can do to stop installing the App again and again.

你可以做一件或多件事来一次又一次地停止安装这个应用程序。


a. Setting appium --no-reset Flag to true :This Flag is used when we don't want to reset app state between sessions (IOS: don’t delete app plist files; Android: don’t uninstall app before new session). Its default Value is False,

a.设置appium——不重置标志为true:当我们不想在会话之间重置app状态时使用这个标志(IOS:不要删除app plist文件;Android:在新会话前不要卸载app)。其默认值为False,

You can start your appium server with "appium --no-reset" command or include server capability like:

您可以使用“appium -no-reset”命令启动appium服务器,或者包含以下服务器功能:

capabilities.setCapability("noReset","true");

b. Make Sure --full-reset Flag is False: : (iOS) Delete the entire simulator folder. (Android) Reset app state by uninstalling app instead of clearing app data. On Android, this will also remove the app after the session is complete. Default false.

b.确保——全重置标志为False: (iOS)删除整个模拟器文件夹。(Android)通过卸载app重置app状态,而不是清除app数据。在Android上,这也将在会话结束后删除应用程序。默认的错误。

capabilities.setCapability("fullReset","false");

c. I think you need to remove launceApp() and closeApp() method from your test case instead of that you just write the test case code instde @Test Case method

c.我认为您需要从您的测试用例中删除launceApp()和closeApp()方法,而不是编写测试用例代码instde @Test case方法

d. Just make sure that your app is already installed on the device also the execution sequence by default of Unit test is like @Before @Test and @After So your SetUp method will run first than your test case and finally Teardown method. So Setup() will contain the server capabilities and Test Env. Specification and TearDown() will be used to close/quit the app,

d.只要确保你的app已经安装在设备上,默认的单元测试执行顺序是@Before @Test和@After,这样你的设置方法会比测试用例先运行,最后是Teardown方法。因此Setup()将包含服务器功能和测试Env。规范和TearDown()将用于关闭/退出应用程序,

You can Find Below My Code for the same:

你可以在我的代码下面找到相同的:

@Before
public void setup(){
    DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("noReset","true");
            capabilities.setCapability("fullReset","false");
            capabilities.setCapability("automationName","Appium");
            capabilities.setCapability("platformName", "Android");
            capabilities.setCapability("VERSION", "5.1.1");
            capabilities.setCapability("deviceName", "LG Nexus 5");
            capabilities.setCapability("appPackage", "com.packageName");
            capabilities.setCapability("appActivity", "ui.activity.SplashScreenActivity");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

@Test
public void sampleTest(){
//Testing Code Only
}

//To Exit/Quit close the driver
    @After
    public void teardown() {
        if (driver != null)
            driver.quit();
    }

Hope you find this useful, Regards

希望你觉得这个有用,亲爱的

更多相关文章

  1. 牛客网Java刷题知识点之同步方法和同步代码块的区别(用synchroniz
  2. android开发 app闪退后fragment重叠bug解决方法,推荐使用第二种方
  3. 手动配置springMVC4的方法
  4. 我可以在测试运行时跳过JUnit测试吗?
  5. JMeter-Java压力测试工具-02
  6. java 的 数据库连接测试类 (SQL server)
  7. 什么案例需要Java中的同步方法访问?
  8. 请问java中调用一个静态方法()内传入一个对象是表示什么意思?
  9. 在命令行下编译单个带包名的java类的方法

随机推荐

  1. c语言数组的定义及赋值
  2. c语言怎么用scanf输入字符串
  3. 如何用c语言输出100到200之间的素数
  4. vb和c语言有什么区别
  5. c++中string的用法介绍
  6. xcode怎么用
  7. c编译程序的功能是什么
  8. 主函数在程序中的位置在哪
  9. 指针和引用的不同点与相同点分别是什么
  10. c语言函数如何声明