2016-09-16 62 views
0

Table with links如何鏈接基於表中的文本中單擊使用硒

大家好,

我有,我需要選擇鏈接如下表。在這個具體的例子中,我需要選擇DIY Payroll,但有時候這可能會改變它在表格中的位置。當前XPath是:

.//*[@id='catalog-category-div-1']/table/tbody/tr/td 1/UL /鋰[4] /一個

所以我做了:

By.xpath(".//*[@id='catalog-category-div-1']/table/tbody/tr/td[1]/ul/li[4]/a").click()

但問題是這裏的是,它可以改變位置,它可以在TD [2]或TD [3]和Li [第n現在的位置]

我可以讓硒穿過桌子並根據文字點擊它。 By.linktext()會在這裏工作嗎?

+0

你用By.linktext()試過了嗎?對網頁上的任何元素執行任何操作都可能非常棘手,因爲它可能取決於多層元素,就像這裏您嘗試訪問元素並單擊該鏈接,但必須以各種方式嘗試實現此操作,找到該元素是一部分! –

回答

0

你應該爲這種情況下使用CSS選擇器: 你可以嘗試:

By.CssSelector("a.browse-catalog-categories-link") 
+0

Hello Moe,如果我想根據文字選擇特定的鏈接,我該怎麼做? –

0

您可以使用XPath來做到這一點。 // a將選擇所有'a'標籤。方括號內的部分將選擇文字爲「DIY Payroll」的所有內容。結合在一起你就可以得到理想的解 // a [包含(text(),'DIY Payroll')]

+0

代碼只回答在SO上皺起了眉頭。請花一分鐘解釋爲什麼以及如何使用這段代碼解決問題,以便它更有用。 – JeffC

1

我建議您嘗試By.linkText()By.partialLinkText()。它會找到一個包含所需文本的A標籤。

driver.findElement(By.linkText("DIY Payroll")).click(); 

你可能會遇到一對夫婦的問題:

  1. 鏈接文本可能出現多次在頁面上更多。在這種情況下,找到一個容易找到的元素(例如通過id),該元素只是您想要的鏈接的父代,然後從該元素進行搜索。

    driver.findElement(By.id("someId")).findElement(By.linkText("DIY Payroll")).click(); 
    
  2. A標籤可以包含額外的空格,其他字符,予以資本化,等等。在這些情況下,你只需要使用.partialLinkText()或試錯嘗試。

  3. 在某些情況下,我看到一個鏈接不是A標籤或包含其他標籤。在這種情況下,您將不得不尋找另一種方法來查找像XPath這樣的文本。

相關問題