我的問題很簡單。我正在編寫一個必須與IE7兼容的Selenium測試。我有幾排3列HTML表:IE7中禁用輸入的XPath表達式。用硒測試
列1 - 包含一個複選框
2列 - 包含一個鏈接
第3欄 - 包含一些自由文本
一(並且只有一個)表格中的複選框被禁用。我的任務是找到並點擊禁用複選框旁邊的鏈接(在禁用複選框的行上)。在Firefox中這個簡單的XPath表達式做工精細:
//tr/td/input[@disabled]/../../td[2]/a
//tr/td/input[@disabled='disabled']/../../td[2]/a
但在IE7中第一個表達式點擊最上面一行不管該複選框被啓用或禁用,第二個是行不通的。
由於HTML文檔很長我把下面的重要組成部分(如圖FF):
<tr>
<td class="table_detail w e s center">
<input name="Delete_kG0KCgAMniwAAAEsxxgeUH0G" type="checkbox">
</td>
<td class="table_detail e s">
<a href="..." class="table_detail_link">000000</a>
</td>
<td class="table_detail e s">
some text
</td>
</tr>
<tr>
<td class="table_detail w e s center">
<input name="Delete_hooKCgAMi5AAAAEsFnQeUH0G" type="checkbox">
</td>
<td class="table_detail e s">
<a href="..." class="table_detail_link">111111</a>
</td>
<td class="table_detail e s">
</td>
</tr>
<tr>
<td class="table_detail w e s center">
<input disabled="disabled" type="checkbox">
</td>
<td class="table_detail e s">
<a href="..." class="table_detail_link">400086</a>
</td>
<td class="table_detail e s">
</td>
</tr>
最後一個環節,應點擊:
<a href="..." class="table_detail_link">400086</a>
我們使用JUnit 3中的Java Selenium API測試。測試是這樣的:
public void testSomething()
{
...
selenium.click("//tr/td/input[@disabled]/../../td[2]/a");
//wait to load and then test something on the page that is opened.
...
}
這適用於FF但不適用於IE7。在IE7中,它會單擊第一行上的鏈接,就好像禁用被忽略一樣。它也評估正確的XPather(FF插件)。
我將不勝感激您的幫助。
謝謝!
@ user520359:這可能無關的XPath。你檢查過那些表達式是否選擇了正確的元素?我不知道Selenium是否適用於源文檔或構建的DOM ...(在表單和表格中,瀏覽器可能會添加一些匿名元素) – 2010-11-25 16:04:38