我运行appium java脚本成功.但问题是,我的应用程序开始与登录页面.登录后,我可以自动化一些测试用例.但我想再次从登录页面通过脚本来运行下一个测试用例..我如何关闭应用程序,也从后台模式,并重新打开applicciation没有重新安装应用程序一次?因为测试用例不应该相互依赖,
public class AppTest {
private static RemoteWebDriver driver;
@BeforeClass
public static void initSimulator() throws MalformedURLException
{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "5.0.1");
capabilities.setCapability("deviceName", "emulator-5554");
capabilities.setCapability("app", "D:\\adt-bundle-windows-x86_64-20140702\\sdk\\platform-tools\\Yr.apk");
capabilities.setCapability("app-package", "com.you.android");
capabilities.setCapability("app-activity", "com.yr.sts.SplashActivity");
capabilities.setCapability("app_wait_activity",".MainActivity");
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),
capabilities);
System.out.println("App Launched");
}
@AfterClass
public static void quitDriver()
{
driver.quit();
System.out.println("Driver has been Quit");
}
@Test
public void sign_in_Click() throws InterruptedException
{
WebElement sign_button = driver.findElement(By.name("Sign-in"));
sign_button.click();
WebElement usr = driver.findElement(By.id("com.you.android:id/et_login_email_or_mobile"));
usr.sendKeys("[email protected]");
Thread.sleep(2000);
WebElement passwrd = driver.findElement(By.id("com.you.android:id/et_login_pwd"));
passwrd.sendKeys("123456789");
Thread.sleep(2000);
driver.findElementByName("Sign in").click();
Thread.sleep(5000);
assertTrue( true );
}
@Test
public void second_sign_in_Click() throws InterruptedException
{
//HERE I WANT TO REOPEN THE APPLICATION WITH SIGN IN AFTER CLOSING APP.BECAUSE IN 1st TESTCASE , I HAVE SIGNED IN.this is a 2nd test case
}
}
1条答案
按热度按时间ax6ht2ek1#
将**@Beforeclass和@AfterClass标签分别更改为@Before和@After**。
现在你的initSimulator()方法将在每个@Test之前被调用,quitDriver()方法将在它之后被调用。这样,你将有新的驱动程序(与明确的应用程序)重新启动每一个案件。
所以-正如你所看到的-在JUnit中,每个测试用例默认情况下都是独立的。
为什么你的问题会发生?来自@BeforeClass文档:
有时几个测试需要共享计算上昂贵的设置(如登录到数据库)。虽然这可能会损害测试的独立性,但有时这是必要的优化。使用@BeforeClass注解一个public static void no-arg方法会导致它在类中的任何测试方法之前运行一次。
顺便说一句,我的initDriver()方法看起来像这样,这是处理退出驱动程序的更好方法:
(it在您的情况下是静态的)