Getting the return value of Javascript code in Selenium
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.