java - Java 负面场景的 Selenium 断言

标签 java selenium testng testng-dataprovider

我试图在 selenium 中断言 gmail 登录的负面测试用例,但最终出现异常。谁能提出问题是什么?

 @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)

最佳答案

获取整个页面源代码来仅测试一小段错误文本是不可行的。最好的方法是找到该元素(当然你希望我首先确定该元素是否存在)并对其执行 .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
       }
}

关于java - Java 负面场景的 Selenium 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798439/

相关文章:

java - 如何获取 GraphicsDevice 的名称

java - TestNG try/catch 无法正常工作

gradle - gradle运行TestNG测试原因 “Error occurred during initialization of VM”

java - JTextField 中的占位符具有正确的方向

Java字符数组初始化器

java - Android 编译 : No rule to make target

ruby-on-rails - 如何启动selenium浏览器并手动关闭它?

selenium - 如何使用 Java 检查 Selenium Webdriver 中的一个元素是否存在于另一个元素内?

python - Selenium Extraction…需要提取CSS Selector定位的元素的文本

java - 如何在 QAF 中使用自定义元数据过滤测试用例?