回答:
値を返すにはreturn
、execute_script()
メソッドに渡される文字列で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'
None
return_value = wd.execute_script("return {foo: 'bar'}")
は、プログラムで後で使用される戻り値を格納します。
return var;
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
この場合の配列が含まれます。