获取Selenium中Javascript代码的返回值

2024-05-19 22:47:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Selenium2对我的网站进行一些自动化测试,我希望能够获得一些Javascript代码的返回值。如果我的网页中有一个foobar()Javascript函数,并且我想调用它并将返回值输入到Python代码中,那么我可以调用什么来实现这一点?


Tags: 函数代码网页网站javascriptfoobar返回值selenium2
2条回答

即使没有像下面的示例代码中那样将代码片段作为函数编写,也可以返回值,方法是在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数组。

要返回值,只需在传递给execute_script()方法的字符串中使用returnJavaScript关键字,例如

>>> 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'

相关问题 更多 >