开发者

Getting the return value of Javascript code in Selenium

开发者 https://www.devze.com 2023-02-23 08:37 出处:网络
I\'m using Selenium2 for 开发者_开发问答some automated tests of my website, and I\'d like to be able to get the return value of some Javascript code.If I have a foobar() Javascript function in my webp

I'm using Selenium2 for 开发者_开发问答some automated tests of my website, and I'd like to be able to get the return value of some Javascript code. If I have a foobar() Javascript function in my webpage and I want to call that and get the return value into my Python code, what can I call to do that?


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'


You can return values even if you don't have your snippet of code written as a function like in the below example code, by just adding return var; at the end where var is the variable you want to return.

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

result will contain the array that is in URLs this case.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号