我有一个导航栏,右侧有2个链接。当您单击其中一个链接时,您将进入相应的页面,并且该链接将突出显示。我想检查运行自动化测试时的情况。我该怎么做呢?
以下是我的java代码
@Test
public void testProductNavBar(){
assertTrue(driver.findElement(By.xpath("/html/body/nav[2]/div/div/ul/li[1]/a")).isSelected());
}
当我运行它时,测试失败并出现以下错误
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)
我不确定这是否是正确的方法。我还是新手,所以任何帮助都非常感谢!
这取决于链接如何突出显示。它可能是通过CSS类。检查链接(右键单击它,您的浏览器将有一些东西可以让您检查它),然后将其CSS与另一个链接的CSS进行比较。
假设差异是一个名为“活跃”的类,那么你会做类似的事情
assertTrue(driver.findElement(By.id(ID_OF_LINK)).getAttribute("class").contains("active"));
这是伪代码。您的语言/ webdriver可能有更好的方法来检查WebElement上的CSS类。
(除此之外:您希望测试与之交互的所有内容都应该有ID;在其上放置ID或要求页面作者执行此操作)
我不认为isSelected()
会适用于你的情况。要检查突出显示的UI,您可以使用@Paul Hicks答案为了获得更强大的测试,您可以检查页面是否正确加载了预期的URL。
点击后你可以等一段时间来获取页面加载,然后可以通过driver.getCurrentUrl()
检查当前打开的URL然后进行比较。您甚至可以检查http响应,参考Http response
我设法按照我想要的方式工作。我使用了.isEnabled()选项,如下所示;
@Test
public void testProductNavBar(){
assertTrue(driver.findElement(By.xpath("/html/body/nav[2]/div/div/ul/li[1]/a")).isEnabled());
}
嗨Michelle Ashwini使用硒来验证链接是否处于活动状态,您可以使用下面的示例代码来执行此操作
Use selenium's isDisplayed()
描述:是否显示此元素?此方法避免了必须解析元素的“样式”属性的问题。返回:是否显示元素
System.setProperty("webdriver.chrome.driver", "D:\\eclipseProject\\####\\src\\com\\smokealignstar\\chromedriver_win32 (1)\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("your URL");
try{
// below line will return true only if link represented by below line is active and working
// otherwise false (if link is not valid or broken)
driver.findElement(By.xpath("/html/body/nav[2]/div/div/ul/li[1]/a")).isDisplayed();
}catch(Exception e){
e.printStackTrace();
}