2

私はIE7、8、9でセレンを使用していますが、何らかの理由で、一部のCSS3ロケーターはIE7および9で機能していますが、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, or :eq, or nth-of-typeロケーターを使用すると、要素が見つからないというWebDriverExceptionが発生します。

また、上記のコードは開発コンソールを介してIE 8で機能しますが、セレンでは機能しません(おそらく、セレンはセレクターにSizzleを使用しているためです)。

誰かがこれがIE8で機能しない理由について私に教えてくれますか、または機能する可能性のある回避策を提案できますか?(つまり、セレクターの間にsをul.tabs:eq(1) > li:nth-child(%d)挿入するようなものを試しましたが、うまくいきませんでした)>

私は、IEDriverServer32ビットとPython2.23APIを備えたSeleniumServer2.23を使用しています。

4

1 に答える 1

2

@AJ が言ったように、Selenium 2 は、ブラウザーのネイティブ CSS セレクターが利用可能な場合はそれを使用します。したがって、この場合、IE 7 には Sizzle を使用し、IE 8 および 9 にはネイティブ セレクターを使用していました。明らかに、IE 8 のセレクターは物事を正しく処理できませんでした。

ul.tabs私が最終的に使用した回避策は、子孫セレクターによって正しいものをターゲットにしてから、+セレクターと jQuery のnext()メソッドを使用してリストをトラバースすることでした。

于 2012-06-13T15:58:39.393 に答える