Получение возвращаемого значения кода Javascript в Selenium
Я использую Selenium2 для некоторых автоматических тестов моего сайта, и я хотел бы иметь возможность получить возвращаемое значение некоторого кода Javascript. Если у меня есть foobar() функция Javascript на моей веб-странице, и я хочу вызвать это и получить возвращаемое значение в мой код Python, что я могу вызвать для этого?
2 ответов:
чтобы вернуть значение, просто используйте
returnКлючевое слово JavaScript в строке, переданной вexecute_script()метод, например,>>> 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 = [] 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данном случае.
Comments