css - WebDriver - ":nth-of-type()"选择器是否适用于 IE 9?

标签 css internet-explorer selenium css-selectors webdriver

SeleniumHQ 表示每个驱动程序都支持其浏览器支持的任何 CSS 选择器。根据this site , IE 9 应该支持 :nth-of-type() 选择器。但是,当我在此选择器上执行 findElements 时,我似乎从 RemoteWebDriver 类的深处得到了一个 NullPointerException。我的 By.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 位

最佳答案

WebDriver 实际上支持浏览器支持的 CSS 选择器,如果 IE9 支持 :nth-of-type()选择器,那么 IE 驱动程序也应该如此。然而,这并不是故事的全部。如果DOCTYPE在您的页面中不是现代标准(例如 <!DOCTYPE html> ,IE 还会尝试猜测它应该如何呈现文档,如果它猜测它应该将其呈现为以前的 IE 版本,它将使用 CSS该先前版本的选择器引擎。

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

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

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

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

关于css - WebDriver - ":nth-of-type()"选择器是否适用于 IE 9?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240549/

相关文章:

jQuery .css() 函数不适用于变量

html - 只有内边框的容器

css - 容器中的图像可以从其中心缩放吗?

vba - 将 IE 自动化代码更改为 XML 时出错

internet-explorer - 在 google.co.uk 上,为什么我的网站在 Firefox 中的排名高于其他桌面浏览器?

python - 在 ubuntu 上从 python 启动 selenium

html - 图像展开表格单元格

javascript - 在 Internet Explorer 上删除传单区域选择

python - 使用 Selenium Python 抓取 Web 时出现 Errno 61

Python Selenium 多处理