在 Selenium 中获取 Javascript 代码的返回值

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

104182 次浏览

To return a value, simply use the return JavaScript keyword in the string passed to the execute_script() method, e.g.

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

即使没有像下面的示例代码那样将代码片段写成函数,也可以返回值,只需在结尾处添加 return var;,其中 var 是要返回的变量。

result = driver.execute_script('''
cells = document.querySelectorAll('a');
URLs = [];
[].forEach.call(cells, function (el) {
URLs.push(el.href)
});
return URLs
''')

在这种情况下,result将包含 URLs中的数组。