javascript - Selenium : IE8 CSS locators

标签 javascript internet-explorer internet-explorer-8 selenium-webdriver

我在 IE 7、8、9 中使用 selenium,由于某种原因,一些 CSS 3 定位器可以在 IE 7 和 9 中工作,但不能在 IE 8 中工作。这是定位器的代码:

IE 9

tab = driver.find_element_by_css_selector('ul.tabs:nth-of-type(1) li:nth-of-type(%d)' % x)

IE 7

tab = driver.find_element_by_css_selector('ul.tabs:eq(1) li:nth-child(%d)' % x)

但在 IE 8 中,使用nth-child、或 :eq 或 nth-of-type 定位器会产生 WebDriverException,表示找不到该元素。

此外,上面的代码可以通过开发控制台在 IE 8 上运行,但它不适用于 selenium(大概是因为 selenium 使用 Sizzle 作为选择器)。

任何人都可以告诉我为什么这在 IE 8 上不起作用,或者建议可行的解决方法。 (我尝试过类似 ul.tabs:eq(1) > li:nth-child(%d) 的东西,即在选择器之间插入 > ,但这并没有不起作用)

我使用的是 selenium 服务器 2.23,带有 IEDriverServer 32 位和 python 2.23 API。

最佳答案

正如 @A.J 所说,Selenium 2 使用浏览器 native CSS 选择器(如果可用)。因此,在本例中,它对 IE 7 使用 Sizzle,对 IE 8 和 9 使用 native 选择器。显然,IE 8 的选择器无法正确处理问题。

我最终使用的解决方法是通过后代选择器定位正确的ul.tabs,然后使用+选择器和jQuery的next() 遍历列表的方法。

关于javascript - Selenium : IE8 CSS locators,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002162/

相关文章:

javascript - jQuery 创建的 <a> 链接在 IE 中未触发

css - IE7 清除 float 问题

html - IE8 CSS 文本间距问题

css - 我该如何解决这个奇怪的 IE 8 img anchor 悬停行为?

javascript - onkeydown 和 onkeyup 事件在 Internet Explorer 8 上不起作用

javascript - Kraken API 中的 InvalidKey 使用 JS,而不是 Python

javascript - jquery 到现有的 php 页面

javascript - Tinybox 不运行 (eval) javascript 代码

html - 影响所有 IE 的 IE8 条件样式表

html - 如何固定一个div元素?