如何断言超链接指向给定的URL?

时间:2010-05-27 13:22:15

标签: ruby selenium

我正在使用Selenium IDE和Selenium RC检查网站上的链接,但我找不到断言链接指向指定网址并具有指定文本的方法。

约束:

  • 通过dom或xpath定位元素是不可行的,因为它会使测试变得脆弱
  • 有多个链接元素具有相同的链接文字

HTML:

<a href="path_x">link text</a>
<a href="path_y">link text</a>

我想做的测试(rspec):

page.is_element_present?("Href=path_y, Link=link text").should be_true
#locator parameters are in order of preference

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我猜get_attribute应该有所帮助。你应该从链接获得href,这是属性。

答案 1 :(得分:1)

给出以下HTML:

<html>
   <body>
     <a id="myLink" href="http://www.example.com">Example Link</a>
   </body>
</html>

您可以使用以下Selenium命令(使用Java / TestNG和Selenium 1.x)

assertEquals(selenium.getText("id=myLink@href"), "Example Link");
assertEquals(selenium.getAttribute("id=myLink@href"), "http://www.example.com/");

使用Selenium 2.x的例子是:

WebElement myLink = driver.findElement(By.id("myLink"));
assertEquals(myLink.getText(), "Example Link");
assertEquals(myLink.getAttribute("href"), "http://www.example.com/");

答案 2 :(得分:1)

您可以使用isElementPresent,如下所示:

assertTrue(selenium.isElementPresent("//a[text()='Example Link' and @href='http://www.example.com/']");