【问题标题】:Selenium(Java), java.lang.AssertionError硒(Java),java.lang.AssertionError
【发布时间】:2017-01-19 07:14:59
【问题描述】:

我写了一个加载页面导航链接的方法。该方法有效,但是当我添加代码以检查正确的 URL 和选项卡标题时,我的测试没有执行。有时会发生 for 循环快速点击页面未加载的一侧,我不知道这是否有问题但我无法检查页面是否加载了正确的 url 或选项卡标题,或者问题是我为检查正确的 url 或标签标题而编写的代码。

这是我的方法:

public void showNavigationLinks(){
        Actions action = new Actions(driver);

        String[] submenus = {"Accessories", "iMacs", "iPads" , "iPhones" , "iPods" , "MacBook"};

        for(int i=0;i<submenus.length;i++)
        {

            WebElement we = driver.findElement(By.xpath("//a[contains(.,'Product Category')]"));
            wait(2000);
            action.moveToElement(we).moveToElement(driver.findElement(By.xpath("//a[contains(.,'"+submenus[i]+"')]"))).click().build().perform();
            wait(3000);

            waitForElementToBeDisplayed(driver.findElement(By.xpath("//a[contains(.,'"+submenus[i]+"')]")) , 500);
            Assert.assertTrue(driver.getCurrentUrl().toLowerCase().contains(submenus[i]));

            Assert.assertTrue(driver.getTitle().contains(submenus[i]));
        }

        link_all_product.click();
    }

这是我的错误:

java.lang.AssertionError
    at org.junit.Assert.fail(Assert.java:86)
    at org.junit.Assert.assertTrue(Assert.java:41)
    at org.junit.Assert.assertTrue(Assert.java:52)
    at PageObject.ProductPage.showNavigationLinks(ProductPage.java:627)

【问题讨论】:

标签: java selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

您的一个断言返回 false,因此您当前的标题或 url 不包含 submenus[i]

您在此处将 URL 转换为小写 (driver.getCurrentUrl().toLowerCase()),但您将其与您的子菜单进行比较,子菜单不是小写的。这可能是你的问题。这是修复:

String expected = submenus[i].toLowerCase();
String actualUrl = driver.getCurrentUrl().toLowerCase();

Assert.assertTrue(actualUrl.contains(expected));

出于调试目的,您可以单步调试代码以查看发生了什么,和/或您可以使错误更有意义:

Assert.assertTrue("Expected: " + actualUrl + " to contain: " + expected,
    actualUrl.contains(expected))

【讨论】:

  • 代码没有到达检查所有方面,当你检查第3页时下降。调试代码不起作用,给我这个错误:断言不能应用于(布尔,java.lang.String)
  • 当测试落在第 3 页时显示此错误:java.lang.AssertionError
  • 对不起,我已经修复了断言,弄乱了我的测试框架。消息应该是第一位的,条件是第二位的。请再试一次:)
  • 显示此错误:java.lang.AssertionError。现在还没到第一页去查。 :( 标记这行代码:Assert.assertTrue (actualUrl.contains (expected));
  • 您的断言错误现在是否告诉您预期的和实际的 url?你用Assert.assertTrue("Expected: " + actualUrl + " to contain: " + expected, actualUrl.contains(expected))了吗?如果它有时工作而不是其他工作,我猜你最终会做一些明确的等待。我可以根据您的错误显示来提供帮助。
猜你喜欢
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
相关资源
最近更新 更多