我的导航栏右侧有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)
我不确定这是否是正确的方法。我仍然是新手,所以任何帮助都非常感谢!
答案 0 :(得分:2)
这取决于链接如何突出显示。它可能是通过CSS类。检查链接(右键单击它,您的浏览器将有一些东西可以让您检查它),然后将其CSS与另一个链接的CSS进行比较。
假设差异是一个名为" active"的类,那么你会做类似的事情
assertTrue(driver.findElement(By.id(ID_OF_LINK)).getAttribute("class").contains("active"));
那个伪代码。您的语言/ webdriver可能有更好的方法来检查WebElement上的CSS类。
(除此之外:您希望测试与之交互的所有内容都应该有ID;在其上放置ID或要求页面作者执行此操作)
答案 1 :(得分:0)
我不认为isSelected()
会适用于您的情况。
要检查突出显示的UI,您可以使@Paul Hicks回答
对于更强大的测试,您可以检查页面是否正确加载了预期的URL。
点击后,您可以等待一段时间来加载页面,然后可以driver.getCurrentUrl()
检查当前打开的网址,然后进行比较。
你甚至可以检查http响应,参考Http response
答案 2 :(得分:0)
我设法按照我想要的方式工作。我使用了.isEnabled()选项,如下所示;
@Test
public void testProductNavBar(){
assertTrue(driver.findElement(By.xpath("/html/body/nav[2]/div/div/ul/li[1]/a")).isEnabled());
}
答案 3 :(得分:-1)
嗨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();
}