WebDriver - “:nth-​​of-type()”选择器是否适用于IE 9?

时间:2012-11-05 21:18:24

标签: css internet-explorer selenium css-selectors webdriver

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

1 个答案:

答案 0 :(得分:2)

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

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

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

如果控制台显示元素信息,那么WebDriver应该能够找到它。如果没有,那么IE无法找到它,WebDriver也不会找到它。

这种调试技术将在您尝试使用IE9中的CSS选择器查找元素时起作用,并且在帮助确定问题是IE还是驱动程序方面非常有用。此外,F12开发人员工具还会告诉您IE正在尝试呈现页面的模式,这也是有益的。