我写了一个加载页面导航链接的方法。该方法有效,但当我添加代码以检查正确的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++)
{
Assert.assertTrue(driver.getCurrentUrl().toLowerCase().contains(submenus[i]));
Assert.assertTrue(driver.getTitle().contains(submenus[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);
}
link_all_product.click();
}
这是我的错误:
Starting ChromeDriver 2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed) on port 2140
Only local connections are allowed.
Jan 17, 2017 4:51:23 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Jan 17, 2017 4:51:31 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
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:620)
答案 0 :(得分:1)
这不是错误,你的断言失败了!
您正在声明...toLowerCase().contains(submenus[i])
。但是,submenus
中的每个项目都包含大写字符!
您可以将断言更改为...toLowerCase().contains(submenus[i].toLowerCase())
。
接下来的问题是:driver.getCurrentUrl()
中的您的网址是否确实包含<{>> submenus
项目的每一个?我怀疑不会!将您的Assert
更改为:
Assert.assertTrue("checking if URL contains: " + submenus[i],
driver.getCurrentUrl().toLowerCase().contains(submenus[i].toLowerCase()));
通过这种方式,您可以准确了解Assert
失败的确切时间和原因。