Получение возвращаемого значения кода Javascript в Selenium - PullRequest
93 голосов
/ 07 апреля 2011

Я использую Selenium2 для некоторых автоматических тестов моего веб-сайта, и я хотел бы иметь возможность получить возвращаемое значение некоторого кода Javascript. Если на моей веб-странице есть функция foobar() Javascript, и я хочу вызвать ее и получить возвращаемое значение в своем коде Python, что я могу вызвать для этого?

Ответы [ 2 ]

156 голосов
/ 07 апреля 2011

Чтобы вернуть значение, просто используйте ключевое слово JavaScript return в строке, переданной методу 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'
4 голосов
/ 28 декабря 2017

Вы можете возвращать значения, даже если у вас нет фрагмента кода, написанного как функция, как в приведенном ниже примере кода, просто добавив 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 в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...