我写了一个加载页面导航链接的方法。该方法有效,但当我添加代码以检查正确的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)
答案 0 :(得分:1)
您的一个断言返回false,因此您当前的标题或网址不包含submenus[i]
您在此处将网址转换为小写(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))