2014-05-17 56 views
0

我使用java的硒web驱动程序。我想点击名称为Downloads的链接。 实际上有四个具有相同名称的链接。当我检查元素我得到如何点击selenium webdriver中的同名链接?

<a href="http://selenium-release.storage.googleapis.com/2.41/selenium-java-2.41.0.zip"></a> 

我试图单击具有以下

driver.findElement(By.xpath("//a[@ href='//http://selenium-release.storage.googleapis.com/2.41/selenium-java-2.41.0.zip']")).click(); 

链接在下面的链接我试图单击第一个下载链接。 Selenium Download

点击不起作用。请问任何机构可以告诉我怎样才能点击这个特定的链接?

在此先感谢。

回答

3

你的XPath是正确的,除了两件事情:

  1. 之间的空白@和HREF;
  2. 2在http之前跳过。

改正这个,它会工作。

另外我不会推荐使用这样的xpaths。如果href值发生变化,你的xpath将无法工作。

因此,为了避免这一点,你可以使用XPath,如:(如2.42)

//tbody//td[text()='Java']/following-sibling::td/a[text()='Download']

它会点击下载链接为Java即使href的值被改变。

0

此XPath会找到下载链接为Java:

//td[(text()='Java')]/following-sibling::td[3]/a 
1

理查德的答案是正确的,但这种XPath是更容易阅读:

//td[(text()='Java')]/following-sibling::td/a[text() = 'Download'] 
0

给出的一个标签之间的小空间,

<a href="http://selenium-release.storage.googleapis.com/2.41/selenium-java-2.41.0.zip"> </a> 

从之前HTTP话取出//(双斜线)。

driver.findElement(By.xpath("//a[@href='http://selenium-release.storage.googleapis.com/2.41/selenium-java-2.41.0.zip']")).click(); 

,如果我们使用

//td[(text()='Java')]/following-sibling::td/a[text() = 'Download'] 

这个代码仅反映webdrive(测试)。所以,我对'Fani Khokhar'代码进行了小小修改。

$.ajax({ 
      type: 'get', 
      url: 'http://docs.seleniumhq.org/download/', 
      success: function(data) { 
       var html = $.parseHTML(data); 
       var main_content = $(html).find('#mainContent table:eq(0)'); 
       var row_count = main_content.find("tbody").find("tr"); 
       for (var i = 0; i < row_count.length; i++) { 
        var MyIndexValue = $(main_content.find("tbody").find("tr:eq(" + i + ")")).find("td:eq(0)").html(); 
        if (MyIndexValue == "Java") { 
         var href_value = main_content.find("tbody").find("tr:eq(0)").find("td:eq(3)").html(); 
         var current_version_link = $(href_value).attr('href'); 
         $("#here_getback_latest_version").html("<a href=" + current_version_link + "/> </a>"); 
        } else { 
         console.log(MyIndexValue + " not required."); 
        } 
       } 
      }, 
      error: function() { 
       alert("error"); 
      } 
     }); 

遵循,

<div id="here_getback_latest_version"></div> 

如果我们在源代码的修改,甚至,虽然变化最新版本也发生了自动下载。

+0

感谢哈里·它的工作原理。 –

+1

@FaniKhokhar我会强烈反对这个答案。它会在下一次Selenium版本发生变化时打破。 – Richard

+0

@Richard我加了小小的修改。 – hari

0

好的..有很多方法可以用xpath来识别元素。

除了别人提出的建议之外,我只是想在下面提到识别特定元素的方法。如果您知道元素在网页中出现的顺序,它会很方便。

(//a[text()='Download'])[2] 

您也可以参考下面的几个链接以供参考。

http://www.quackit.com/xml/tutorial/xpath_string_functions.cfm http://news.rapgenius.com/Mat-brown-xpath-is-actually-pretty-useful-once-it-stops-being-confusing-annotated#note-2363798

相关问题