首页 文章

为什么通过Xpath的selenium定位元素在IE中失败了,但它在firefox中工作了吗?

提问于
浏览
1

我在firefox中运行了我的selenium自动化测试脚本,效果很好 . 现在我想在IE中运行脚本,它似乎在 locating an element in GUI. 的步骤失败了 . 似乎selenium无法在GUI中找到元素,而firefox可以轻松找到它 .

String servicenameidtext = "//table[@id='release_hostsProcesses_list']/tbody/tr[2]/td[1]/td";
Selenium.getText(servicenameidtext );

事实上,脚本是由selenium-IDE记录的,我检查了Xpath,我认为该元素没有问题 . But why selenium failed on this step in IE?

谁能告诉我原因?如何在IE中运行测试时解决问题?非常感谢!

I want to locate the element "alarmlm" from the GUI by

String servicenameidtext =“// table [@ id ='release_hostsProcesses_list'] / tbody / tr [2] / td [1] / td”;

P.S:  The html of the part:
<tbody><tr class="form-title"><td colspan="3"><a href="javascript:void(0);" onclick="javascript:ChangeVisibility( 'release_hostsSoftwareInformation' ); return false;"><img src="img/minus.png" title="-" alt="-"></a>&nbsp;<b>Software Information</b>
</td></tr><tr><td><div id="release_hostsSoftwareInformation_internal">
<table id="release_hostsProcesses_list" border="0" width="100%" class="Processes_list"><tbody>
<tr class="title-column"><td><b>Service Name</b></td><td><b>Summary</b></td><td><b>Description</b></td><td><b> Version </b></td><td><b>Release</b></td><td colspan="2"><b>Installation Date</b></td></tr><tr><td>alarmlm</td><td>mpm</td><td>MultiPlatformManagement tools</td><td>4.0.12</td><td>5</td><td>Wed 10 Nov 2010 04:23:52 AM CST</td></tr><tr><td>annlabclient</td><td>Annlab Client</td><td>Annlab Client</td><td>5.0.13</td><td>23</td><td>Wed 10 Nov 2010 04:23:57 AM CST</td></tr><tr><td>annlabserver</td><td>Annlab Server</td><td>Annlab Server</td><td>5.0.13</td><td>23</td><td>Wed 10 Nov 2010 04:23:57 AM CST</td></tr><tr><td>recoveryalarmlm</td><td>mpm</td><td>MultiPlatformManagement tools</td><td>4.0.12</td><td>5</td><td>Wed 10 Nov 2010 04:23:52 AM CST</td></tr><tr><td>recoverystatlm</td><td>mpm</td><td>MultiPlatformManagement tools</td><td>4.0.12</td><td>5</td><td>Wed 10 Nov 2010 04:23:52 AM CST</td></tr><tr><td>mrfctrl</td><td>MRF Controller</td><td>mrfctrl - including sipproxySubsystem</td><td>1.4.0.5</td><td>1</td><td>Wed 10 Nov 2010 04:24:00 AM CST</td></tr></tbody></table></div></td></tr></tbody>

Thanks to all, the problem is solved. The cause is: the html in firefox and IE are not the same. Strange.

4 回答

  • 2

    在这个案例中,我们可以做一件事

    要检查Internet Explorer的元素,可以使用IE开发人员工具和FireFox Firebug

    我们可以比较两个Inspections从IE Developer Tools获取对象的XPath / CSS .

    使用和检查它是否在IE和FF中都有效

    如果它工作正常否则有条件我们可以使用相应的XPath根据浏览器 .

  • 1

    也许,由于默认命名空间?

    错误解释是在您没有向我们展示的数据中 - 如何提供(x)Html文本?

    UPDATE

    现在OP提供了源(x)Html文档 . 提供的XPath表达式:

    //table[@id='release_hostsProcesses_list']/tbody/tr[2]/td[1]/td
    

    doesn't select the required element simply because a td is never a child of another td, 但这正是这个XPath表达式正在寻找的东西 - 它的结尾是:

    td[1]/td
    
  • 1

    您可以尝试通过将/ text()附加到xpath表达式来检查IE中的文本值是什么 . 也许它找到空字符串?

    String servicenameidtext = "//table[@id='release_hostsProcesses_list']/tbody/tr[2]/td[1]/td/text()";
    alert("found:"  + servicenameidtext);
    

    我的两分钱,

  • 0

    尝试在id字段中使用所有小写字符:

    String servicenameidtext = "//table[@id='release_hostsprocesses_list']/tbody/tr[2]/td[1]/td";
    Selenium.getText(servicenameidtext );
    

    应该在FF和IE中都有效

相关问题