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 ロケーターを識別するための頼りになるツールになりました。WebDriver と IE 9で :nth-of-type()セレクターをロケーターとして使用して成功した人はいますか?

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>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 がページをレンダリングしようとしているモードも教えてくれます。これも参考になります。

于 2012-11-06T19:15:43.450 に答える