为什么selenium通过Xpath定位元素在IE中失败,但在firefox中却可以正常工作?
我的 selenium 自动化测试脚本在 Firefox 中运行,并且运行良好。 现在我想在IE中运行脚本,似乎在在GUI中定位元素的步骤失败。似乎selenium无法在GUI中找到该元素,而firefox可以轻松找到它。
String servicenameidtext = "//table[@id='release_hostsProcesses_list']/tbody/tr[2]/td[1]/td";
Selenium.getText(servicenameidtext );
事实上,脚本是用selenium-IDE录制的,我检查了Xpath,我认为元素没有问题。 但是为什么selenium在IE中这一步失败了?
有人能告诉我原因吗?在IE中运行测试时出现问题如何解决? 多谢!
我想通过以下方式从 GUI 中定位元素“alarmlm”
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> <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>
谢谢大家,问题已经解决了。原因是:firefox和IE中的html不一样。奇怪。
I have my selenium automation test scripts run in firefox, and it works well.
Now I want to run the scripts in IE, it seems it failed on the step of locating an element in GUI. It seems selenium can't find the element in GUI while firefox can easily find it.
String servicenameidtext = "//table[@id='release_hostsProcesses_list']/tbody/tr[2]/td[1]/td";
Selenium.getText(servicenameidtext );
In fact, the scripts is recorded by selenium-IDE, and I have check about the Xpath, I think there is no problem of the element. But why selenium failed on this step in IE?
Could anyone tell me the reason? And how to solve the problem when running test in IE?
Thanks a lot!
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> <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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
也许是由于默认名称空间?
错误解释位于您未向我们展示的数据中 - 提供 (x)Html 文本怎么样?
更新:
现在OP已经提供了源(x)Html文档。提供的 XPath 表达式:
不会仅仅因为
td
永远不是另一个td
的子级而选择所需的元素,但这正是这个 XPath 表达式正在寻找——它以以下形式结尾:Maybe, due to a default namespace?
The error explanation is in the data you haven't shown us -- what about providing the (x)Html text?
UPDATE:
Now the OP has provided the source (x)Html document. The provided XPath expression:
doesn't select the required element simply because a
td
is never a child of anothertd
, but this is exactly what this XPath expression is looking for -- it ends with:您可以尝试通过将 /text() 附加到 xpath 表达式来直接在 IE 中检查文本值是什么。也许它找到了空字符串?
我的两分钱,
you could try to check out what the text value is directly in IE by appending /text() to the xpath expression. Maybe it finds the empty string?
My two cents,
尝试在 id 字段中使用所有小写字符:
应该在 FF 和 IE 中工作
Try to use all lowercase characters in id field:
Should work in both FF and IE
在这种情况下,我们可以做一件事
:检查 Internet Explorer IE 开发人员工具的元素,对于 FireFox Firebug,
我们可以比较这两种检查 从对象的 IE 开发人员工具中派生 XPath/CSS。
使用并检查它是否在 IE 和 FF 中都工作
如果工作正常否则有条件我们可以根据浏览器使用相应的 XPath。
In this Case we can do 1 thing
To Inspect Elements for Internet Explorer IE Developer Tools is available and for FireFox Firebug
We can compare both Inspections Derive the XPath/CSS from IE Developer Tools for the Object.
Use and Check is it working in both IE and FF
If it works Fine Otherwise Conditionally we can use the corresponding XPath According to Browsers.