私は自分のウェブサイトのいくつかの自動テストにSelenium2を使用していますが、Javascriptコードの戻り値を取得できるようにしたいと考えています。 Webページにfoobar()
Javascript関数があり、それを呼び出して戻り値をPythonコードに取得したい場合、何を呼び出すことができますか?
値を返すには、execute_script()
メソッドに渡される文字列でreturn
JavaScriptキーワードを使用するだけです。
>>> from Selenium import webdriver
>>> wd = webdriver.Firefox()
>>> wd.get("http://localhost/foo/bar")
>>> wd.execute_script("return 5")
5
>>> wd.execute_script("return true")
True
>>> wd.execute_script("return {foo: 'bar'}")
{u'foo': u'bar'}
>>> wd.execute_script("return foobar()")
u'eli'
Varが返す変数である最後にreturn var;
を追加するだけで、以下のサンプルコードのように関数として記述されたコードがなくても値を返すことができます。
result = driver.execute_script('''cells = document.querySelectorAll('a');
URLs = []
console.log(cells);
[].forEach.call(cells, function (el) {
if(el.text.indexOf("download") !== -1){
//el.click();
console.log(el.href)
//window.open(el.href, '_blank');
URLs.Push(el.href)
}
});
return URLs''')
result
には、この場合URLs
にある配列が含まれます。