セレンは、Javascriptのスクリプトが複数行のステートメントをサポートしている実行するために)(drvier.execute_scriptで使用することができます。
Javascriptが以下の機能を使用して達成することができます。
- 削除要素は、無効、読み取り専用属性の制限を隠します
- 要素のIDやハイライトのスタイルを追加します。
- ページのスクロール
- リッチテキスト入力ボックス(HTMLインジェクション)
- 情報ページを取得します。
JavaScriptを使用パラメータ
使用Javascriptの文で、更なるパラメータは、動的オブジェクトまたは要素を通過することができる、Javascriptのプレースホルダーは、次のような最初のいくつかのパラメータを取るために「引数[N]」を示す文で使用しました:
js = "arguments[0].setAttribute('style', arguments[1]);"
ここでは、2つの埋め込みパラメータ、オブジェクトの一つの要素は、他のパターン文字列です。
element = driver.find_element_by_id("kw")
style = "background: red; border: 2px solid yellow;"
パラメータを運ぶために、ときにスクリプトを実行:
driver.execute_script(js, element, style)
Javascriptが戻り値を取得します
プラス、このようなページの高さへのアクセスなどのJavascriptステートメント、内の単語を返します。
js = 'return document.documentElement.scrollHeight;'
実行は、その戻り値の後に取得できます。
page_height = driver.execute_script(js)
完全な例
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
js = 'arguments[0].setAttribute("style", arguments[1]);'
element = driver.find_element('id', 'kw')
style = 'background: red; border: 2px solid yellow;'
driver.execute_script(js, element, style)
page_height = driver.execute_script('return document.documentElement.scrollHeight;')
print(page_height)
time.sleep(3)
driver.quit()
図に示す実行結果:
結果を印刷します:
890