RubyやPythonなどでSeleniumを操作していると、JavaScriptを使いたくなる場面が出てきます。今回は、SeleniumでJavaScriptを使ったコードをまとめました。

JavaScript

今回の例では要素の取得は、CSSセレクタで指定出来るquerySelectorAllを使っています。

要素をクリックする(click)

driver.execute_script("document.querySelectorAll('.tmp')[0].click();")

Seleniumでは、通常は画面上に要素がないとエラーになりますが、JSを使ってクリックすると画面上に要素がない状態でもエラーを回避できます。

テキストを書き換える(textContent)

driver.execute_script("document.querySelectorAll('.element')[0].textContent = 'test';")

Style属性を付与して背景色を変更する(style)

driver.execute_script('document.querySelectorAll(".element")[0].style.backgroundColor = "#ff0000";')

HTMLのタグ(input)を挿入する(insertAdjacentHTML)

driver.execute_script("document.querySelectorAll('.element')[0].insertAdjacentHTML('afterbegin','<inpu type=file id=tmp>');")

Seleniumでは、spanやdivタグなどをクリック出来ません。そこでinputやButtonタグなどクリックするためのタグに置き換えることで、クリックが出来ないエラーを回避出来ます。

属性の追加、onfocusで文字全選択にする(setAttribute)

driver.execute_script("document.querySelectorAll(.element)[0].setAttribute('onfocus', 'this.select()')")

一番下までスクロールする(window.scrollTo)

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

印刷ダイアログを呼び出す(window.print)

driver.execute_script('return window.print();')

印刷ダイアログを呼び出すことで、WEBページをPDFとして保存することが出来ます。

新しいウィンドウを開く(window.open)

driver.execute_script("window.open()")

ウィンドウの操作をもう少し見たい方は、こちらの記事をご確認ください。

ウィンドウを閉じる(window.close)

driver.execute_script("window.close();")

jQuery

JavaScriptだけでなく、jQueryも使えます。

Classを削除する(removeClass)

driver.execute_script("$(\"input[type=checkbox]\").removeClass('element')")

inputタグのdisplay:none;を無効にする(css)

driver.execute_script("$(\"input[type='file']\").css('display','')")

以上

参考

jQueryからネイティブJavaScriptへ置き換えの第一歩