はじめに
Seleniumでブラウザを操作していると必ずぶち当たりますが、Seleniumでチャックボックスとかボタンをクリックしたいとき、HTML上にあるけどブラウザの中にボタンが現れてないとエラー吐いちゃうんですよね(><)
適当にスクロールしたりするんですが、それも結構面倒だったり、モーダルになってたりすると、背景だけスクロールされちゃったりしちゃいます。
要素を画面内に表示する
色々調べた結果、Seleniumの「driver.ExcuteScript」で、JavaScriptの「Element.scrollIntoView()」を使うのが一番ラクで安定するなって思っています(^o^)
driver.ExecuteScript "Element.scrollIntoView()"
”Element”の部分は、JavaScriptの「document.getElementById(‘id’) )とかで取得してくださいね(^o^)
driver.ExecuteScript "document.getElementById('id').scrollIntoView()"
みたいな感じです。
モーダルウィンドウ上の要素も、サクッとブラウザ内に持ってくることが出来ますよ(^o^)
JavaScriptなんて分かんね~よ!って方は、Seleniumで取得したエレメントを使う書き方の以下をどうぞ(^o^)
Dim el as Selenium.WebElement
set el = driver.FindElemmentById('id')
driver.ExecuteScript "arguments[0].scrollIntoView();", el
こっちの方が使いやすいですね!
僕は、ラジオボタン処理・チェックボックス処理・クリック処理のサブルーチンを作成して、とりあえず画面内に持ってきてから要素にアクションするうようにしています!
追記
よくよく見たら、WebElementクラスの中にScrollIntoViewメソッドが、、、
Dim el as Selenium.WebElement
set el = driver.FindElemmentById('id')
el.ScrollIntoView True
でいけるっぽいですね。
引数に指定している「True」は、デフォルトが「False」になってますが、デフォルトままだと要素のTOPが画面内に入ってるところで止まってしまって、ボタン押せないときがあるので、「True」を設定しておいた方が良いです(^o^)
JavaScriptどうのこうのっていちびった自分、恥ず。。。
SeleniumBasicの始め方
SeleniumBasicって何?って言う方は、まずはこちらの記事をどうぞ。
始め方を説明しています!
※SeleniumBasicの始め方
そして基本的な使い方をまとめた記事はこちら!
コメント