获取Selenium中Javascript代码的返回值


Answers:


166

要返回值,只需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'

如果变量不是由javascript定义的,返回值是什么?它抛出异常还是只是一个空字符串?
亚历克斯(Alex)

如果未定义变量,则返回None
dbJones

7
这些新手的快速注释,return_value = wd.execute_script("return {foo: 'bar'}")将存储返回的值,以供以后在程序中使用。
ntk4

1
文档缺少指定Retruns:注释。尽管在用法中:示例他们放置了一个js,它返回文档标题。最好明确指定Retruns:在其文档中
-woodz,

7

即使您没有像下面的示例代码中那样将代码的片段作为函数编写,也可以通过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这种情况下的数组。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.