2012-01-30 34 views
1

我有一個具有4個日曆小工具的窗體。所有小部件的html源代碼都是一樣的。使用nth-child和WebDriver無法找到頁面上的第n個元素

<div class="grid_12"> 
<td class="wikicell"> 
    <div class="Item"> 
     <div class="Value"> 
      <input type="hidden" id="Submit_Date$_type" value="Date,99/99/9999"> 
      <input id="Submit_Date" size="40" value="" type="text"> 
      <a href="javascript:" class="Calendar"> 
       <img src="transparent.gif" class="Placeholder" tabindex="-1" align="absmiddle"> 
      </a> 
     </div> 
    </div> 
</td> 

我可以使用下面的代碼,找到第一個日曆:

driver.findElement(By.cssSelector("div.grid_12 img.Placeholder"), 15).click(); 

但是,當我嘗試使用第n個孩子所在的第2,第3和第4日曆(2 )/(3)或(4)我得到一個「無法定位元素:{」方法「:」css選擇器「,」選擇器「:」div.grid_12 img.Placeholder:nth-​​child(2)「}

我也試過用「a.Calendar」,「div.grid_12 img」也是用f或第一個日曆。這3個選擇器可以在與「n-child(1)」一起使用時成功點擊並打開第一個日曆小部件,但不能用於下一個3.

在第一個日曆關閉後我使用了Thread.sleep(3000)最終得到相同的錯誤。

我使用findElements()方法獲取所有日曆小部件,並使用size()檢查WebDriver是否查找所有日曆元素。結果如預期的那樣是4。

我沒有正確使用'n-child'嗎?

+1

您的'img.Placeholder'元素始終是每個日曆中的第一個孩子。您可能需要在別處移動':nth-​​child()'。 – BoltClock 2012-01-31 02:55:21

回答

4

我首先找到具有這些日曆圖標的窗體/表,並在此元素上調用findElement()作爲查找各自日曆的參考。這裏的解決方案 -

WebElement form = uiHelper.waitForElementPresent(By.cssSelector("table.left tbody"), 15); 
//Enter time 
form.findElement(By.cssSelector("tr:nth-child(3) td:nth-child(2) img")).click(); 
form.findElement(By.cssSelector("tr:nth-child(4) td:nth-child(2) img")).click(); 
相關問題