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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用selenium检查链接是否处于活动状态相关的知识,希望对你有一定的参考价值。

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

以上是关于如何使用selenium检查链接是否处于活动状态的主要内容,如果未能解决你的问题,请参考以下文章

检查窗口是不是处于活动状态

如何在android中检查3g是不是处于活动状态

如何检查游戏对象是不是处于活动状态

使用连接池后返回连接时如何检查连接是不是处于活动状态?

检查 WooCommerce 是不是处于活动状态以及使用的版本

检查 react-router 路径是不是处于活动状态