2014-05-17 95 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

相關問題