如何使用selenium检查链接是否处于活动状态

问题描述 投票:0回答:4

我有一个导航栏,右侧有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)

我不确定这是否是正确的方法。我还是新手,所以任何帮助都非常感谢!

java selenium-webdriver automated-tests testng
4个回答
2
投票

这取决于链接如何突出显示。它可能是通过CSS类。检查链接(右键单击它,您的浏览器将有一些东西可以让您检查它),然后将其CSS与另一个链接的CSS进行比较。

假设差异是一个名为“活跃”的类,那么你会做类似的事情

assertTrue(driver.findElement(By.id(ID_OF_LINK)).getAttribute("class").contains("active"));

这是伪代码。您的语言/ webdriver可能有更好的方法来检查WebElement上的CSS类。

(除此之外:您希望测试与之交互的所有内容都应该有ID;在其上放置ID或要求页面作者执行此操作)


0
投票

我不认为isSelected()会适用于你的情况。要检查突出显示的UI,您可以使用@Paul Hicks答案为了获得更强大的测试,您可以检查页面是否正确加载了预期的URL。

点击后你可以等一段时间来获取页面加载,然后可以通过driver.getCurrentUrl()检查当前打开的URL然后进行比较。您甚至可以检查http响应,参考Http response


0
投票

我设法按照我想要的方式工作。我使用了.isEnabled()选项,如下所示;

@Test
public void testProductNavBar(){
    assertTrue(driver.findElement(By.xpath("/html/body/nav[2]/div/div/ul/li[1]/a")).isEnabled());
}

-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();
        }
© www.soinside.com 2019 - 2024. All rights reserved.