Seleniumを使ってテスト自動化。TrendsLatest:Seleniumを使ってテスト自動化。Gridを使用してマルチノード/マルチスレッドでテスト実施]Seleniumを使ってテスト自動化。Seleniumでテストシナリオを作成する際に注意するポイント]Seleniumを使ってテスト自動化。Java]Seleniumを使ってテスト自動化。Python]Seleniumを使ってテスト自動化。Seleniumを始める時に最初に知っておくべきこと。WebSeleniumを使ってテスト自動化。テスト自動化Seleniumを使ってテスト自動化。Java]Seleniumを使用してのテスト自動化。第4回目からは応用編となります。これまでは「Seleniumを使ってテストしてみようかな」という初心者を対象としていましたが、今回からはすでにSeleniumをご存知の方やさらに知見を深めたい方を対象としています。基本的に本シリーズはプログラミング言語としてJavaを使用して説明していきます。応用編として今回は、Seleniumでテストシナリオを作成する際によくあるトラブルの解決手順について、そして次回はSeleniumを利用したテストツールをさらに発展させるためのスキル、知識について紹介します。目次Seleniumを使ってテスト自動化。上記の1,2どちらを試してもまだエレメントが操作できない場合Javascriptを利用する。Robotを利用する。「Seleniumでテストを自動化するということはロケータを利用して各エレメントを操作することの組み合わせです。例としてFacebookのログイン動作は以下のように記述できることも紹介しました。//ログインボタンクリック(ロケータとしてxpathを利用)driver.findElement(By.xpath("//*[@id='Login']")).click();しかしながら、実際にSeleniumを使ってコーディングして、いざプログラムを動かしてみると、「エレメントがうまく取得できない、操作できない」というトラブルに遭遇します。WebサイトはあなたのSelenimプログラムがうまく動作するために作られているわけではありません。ユーザーがブラウザを操作することを前提に作成されています。そのため、各Webサイトにはそれぞれいわゆる「クセ」があるため、一般的にseleniumで操作する際はWebサイト毎に色々と工夫を凝らす必要があります。ここではその「クセ」の正体と解消方法についてみていきます。いうExceptionが発生し、エレメントが操作できないケースがあります。<原因>これはそのエラーメッセージの通り、エレメントがまだ使用できる状態ではないが、Seleniumによって操作しようとすると発生します。実際のユーザが以下のアクションをブラウザで行うことについて考えていきましょう。いうExceptionが発生して失敗してしまいます。Name");<解決方法>以下のようにアクションを利用してSeleniumでも動作1-3をきちんとシュミレートさせる必要があります。Actionsクラスを使用することにより一連の複数の動作を実行できます。Name").perform();3行目において、「テキストボックスに移動->クリック->入力」を行っています。エレメントは存在するはずだが認識できない場合こちらは1のケースよりもさらに深刻です。Seleniumを利用してエレメントを操作できないだけではなく、そもそもエレメントの存在を認識できないケースです。代表的なエラーに以下のようなメッセージが出現して、処理が失敗するケースがあります。non-finite.“<原因>この種のエラーはAjaxを多用しているWebサイトや、各種フレームワークを利用して作成されたWebサイトをテストする際に多くみられます。この傾向は前述したエラーケース1の場合もあてはまります。これらのWebサイトではフレームワークの機能を利用してDOMを介して動的にエレメントが表示されたり、状態が変化するため、Seleniumを利用してのエレメント操作の難易度が上がります。前述したエラーケース1の解決方法を試行する。上記手順1を試行したが失敗した場合、フレームの有無をチェックする。Javascriptとフレームワークを利用してWebサイトが作成されている場合、その表示されているドキュメントにはフレームが使用されている場合があります。この場合、Seleniumはデフォルトの状態ではフレーム内のエレメントを認識することができません。Cを操作することができます。Cについては認識することができません。このため、Seleniumを利用してエレメントを操作する場合、明示的にポジションを以下のように移動します。