2015-03-01 3 views
2

Я пытаюсь утверждать отрицательный тестовый пример для входа в систему gmail в selenium, но заканчивая получением исключения. Может ли кто-нибудь предположить, в чем проблема?Selenium Assertion for Negative Scenario Java

@Test(dataProvider="LoginData") 
public void testMethod(String email,String password) throws InterruptedException{ 
      browser.findElement(By.id("Email")).clear(); 
      browser.findElement(By.id("Email")).sendKeys(email); 
      browser.findElement(By.id("Passwd")).sendKeys(password); 
      browser.findElement(By.id("signIn")).click(); 
      browser.wait(30000); 
      assertTrue(browser.getPageSource().contains("The username or password you entered is incorrect.")); 

}

Сгенерировано исключение

java.lang.IllegalMonitorStateException 
at java.lang.Object.wait(Native Method) 
at seleniumExcel.DataProviderAutomation.testMethod(DataProviderAutomation.java:38) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) 
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) 
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) 
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) 
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 
at org.testng.TestRunner.privateRun(TestRunner.java:767) 

ответ

2

Это не представляется возможным, чтобы захватить весь исходный код страницы, чтобы проверить только один небольшой текст сообщения об ошибке. Лучшим способом будет поиск элемента (конечно, вы хотите, чтобы я сначала удостоверился, существует ли элемент) и выполните .contains(). Поскольку вы не указали html, я не уверен, как вы можете найти целевой элемент. Но определенно вы хотите использовать FindElement(). Что-то вроде следующего, это код, который вы можете захотеть

@Test(dataProvider="LoginData") 
public void testMethod(String email,String password) throws InterruptedException{ 
    WebDriver browser = new ChromeDriver(); 
    browser.findElement(By.id("Email")).clear(); 
    browser.findElement(By.id("Email")).sendKeys(email); 
    browser.findElement(By.id("Passwd")).sendKeys(password); 
    browser.findElement(By.id("signIn")).click(); 
    browser.wait(30000); 

    try{ 
     String error = browser.findElement(By.id("Your id")).getText(); 
     assertTrue(error.contains("The username or password you entered is incorrect.")); 

     }catch (NoSuchElementException e){ 
     //something else 
     } 
}