Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Selenium中Javascript代码的返回值_Javascript_Python_Selenium_Selenium Webdriver - Fatal编程技术网

获取Selenium中Javascript代码的返回值

获取Selenium中Javascript代码的返回值,javascript,python,selenium,selenium-webdriver,Javascript,Python,Selenium,Selenium Webdriver,我正在使用Selenium2对我的网站进行一些自动测试,我希望能够获得一些Javascript代码的返回值。如果我的网页中有一个foobar()Javascript函数,我想调用它并将返回值输入Python代码,那么我可以调用什么来执行呢?要返回值,只需在传递给execute\u script()方法的字符串中使用returnJavascript关键字,例如 >>> from selenium import webdriver >>> wd = webdriv

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

要返回值,只需在传递给
execute\u 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'

即使没有像下面的示例代码那样将代码片段编写为函数,也可以通过添加
returnvar来返回值在var是要返回的变量的末尾

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

result
将包含这种情况下
url
中的数组。

如果javascript没有定义变量,返回值是什么?它会抛出异常还是仅仅是一个空字符串?如果没有定义变量,它会为这些新手返回
None
快速注释,
return\u value=wd.execute\script(“return{foo:'bar'}”)
将存储返回的值,以便以后在程序中使用。缺少指定Retruns:note。尽管在teir Usage:sample中,他们放置了一个返回文档标题的js。最好在文档中显式指定Retruns: