如何使用selenium

时间:2016-04-04 02:22:51

标签: java selenium-webdriver automated-tests testng

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

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

4 个答案:

答案 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();
        }