0

SeleniumHQ 表示每个驱动程序都支持其浏览器支持的任何 CSS 选择器。根据这个站点,IE 9 应该支持:nth-of-type()选择器。但是,当我在这个选择器上执行时,我似乎NullPointerException从类的深处得到了一个。我的样子是这样的:RemoteWebDriverfindElementsBy.cssSelector

table#ucsp_dgMultiSelect tr:nth-of-type(2) input#cbPres

这在 Chrome 上运行良好。也许 IE 9 将选择器放在中间有问题,我不知道,但这会破坏我的很多代码。: nth-of-type()选择器已成为我在表中识别 WebElement 定位器的首选。有没有其他人成功使用:nth-of-type()选择器作为 WebDriver 和 IE 9 的定位器?

我正在使用IEDriverServer.exe.2.25.2.0,我的 IE 版本是9.0.8112.16421 64 位

4

1 回答 1

2

事实上,WebDriver 支持浏览器支持的 CSS 选择器,如果 IE9 支持:nth-of-type()选择器,那么 IE 驱动程序也应该支持。然而,这并不是故事的全部。如果DOCTYPE您的页面中<!DOCTYPE html>的以前版本的引擎。

由于您使用的是 IE9,因此有一种非常简单的方法可以查看 WebDriver 是否应该能够使用您尝试使用的选择器找到元素。在您感兴趣的页面上按功能键 F12 打开“F12 开发人员工具”。转到“开发人员工具”中的“脚本”选项卡,然后键入

document.querySelector('table#ucsp_dgMultiSelect tr:nth-of-type(2) input#cbPres')

如果控制台显示元素信息,那么 WebDriver 应该可以找到它。如果没有,那么 IE 就找不到它,WebDriver 也永远不会。

这种调试技术将在您尝试使用 IE9 中的 CSS 选择器查找元素的任何时候起作用,并且对于帮助找出问题是 IE 还是驱动程序非常有用。此外,F12 开发人员工具还会告诉您 IE 尝试以何种模式呈现页面,这也很有指导意义。

于 2012-11-06T19:15:43.450 回答