2014-06-10 52 views
1

我有我的HTML代碼如下所示:硒點擊表格TD裏面

<div id="food-search-all" class="fd_food_search_all fd_loading" style="display: block;"> 
    <ul class="fd-breadcrumbs" > 

     <li> 
      <a href="Javascript://" class="breadcrumb">Baked beans</a> 
     </li> 
    </ul> 

    <div class="fd-search-results"><table class="results ib-list" cellpadding="0" cellspacing="0" border="0"> 
     <tbody>   
      <tr class="foods foods_s-fndds244535"> 
       <td class="name"> 
        <a href="Javascript://">Baked beans</a> 
       </td> 
       <td class="default-amount"> </td> 
      </tr> 

      <tr class="foods foods_s-fndds244535"> 
       <td class="name"> 
        <a href="Javascript://">Chickens</a> 
       </td> 
       <td class="default-amount"> </td> 
      </tr> 
      <tr class="foods foods_s-fndds244535"> 
       <td class="name"> 
        <a href="Javascript://">Cow milk</a> 
       </td> 
       <td class="default-amount"> </td> 
      </tr> 
     </tbody> 
    </table></div> 
</div> 

我怎麼可以單擊該文本Baked beans位於內表/ TR/TD /一

我嘗試這個下面的代碼,

driver.findElement(By.xpath("/table[contains(@class,'results ib-list')]/tbody/tr/td[@class = 'name']/a[contains(text(),"+linktext+")]")).click(); 

但其顯示的異常:

org.openqa.selenium.InvalidSelectorException: The given selector 

回答

0

在你的代碼,誤差小,你錯過了周圍的文本"+linktext+"「」:

driver.findElement(By.xpath("/table[contains(@class,'results ib-list')]/tbody/tr/td[@class = 'name']/a[contains(text(),'"+linktext+"')]")).click(); 

NoSuchElementException通常意味着該元素處於frame,或加載緩慢。 Selenium只與當前幀中的元素交互。在您切換到frame之前,子女frame中的任何元素都無法與其互動。您可以通過使用switchTo().frame()切換:

driver.switchTo().frame(ARG); 

的論據frame()

  • 數量從0
  • ID的frame
  • webelement rerference的frame

當在完成,請使用以下退出返回到文檔的頂部:

driver.switchTo().defaultContent(); 
+0

測試,仍然相同的錯誤..'org.openqa.selenium.NoSuchElementException:無法找到元素:{ 「方法」: 「的xpath」, 「選擇器」:「/表[含有(@類,」結果IB-名單 ')]/TBODY/TR/TD [@class = '名']/A [包含(文本(),' 烤豆)]「}' –

+0

@Sundara這是一個不同的異常。原始異常是無效的選擇器異常。現在你得到一個沒有這樣的元素例外。這表明該元素要麼在幀或iframe中,要麼加載速度慢。 – Richard

+0

hw解決這個呢? –

0

當你有一個標籤下的鏈接,使硒必須用下面的代碼工作。 了XPath將是.//*[@id='food-search-all']/ul/li(假定DIV ID是唯一的。您可以採取的幫助與螢火蟲的生成的XPath)

IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal)); 
string CellVal = TargetElement.Text.ToString(); 
TargetElement = driver.FindElement(By.LinkText(CellVal)); 
TargetElement.Click(); 

有時事務所使用。點擊(的)不工作我會建議增加一個TargetElement.Click();如果你第一次嘗試不行。