我的问题很简单。我正在编写一个必须与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