Понимание выполнения асинхронного скрипта в Selenium
Я используюselenium
(спривязки питона и черезprotractor
в основном) в течение довольно длительного времени и каждый раз, когда мне нужно было выполнить код JavaScript, я использовалexecute_script()
метод. Например,для прокрутки страницы (Python):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
Или длябесконечная прокрутка внутри другого элемента (транспортир):
var div = element(by.css('div.table-scroll'));
var lastRow = element(by.css('table#myid tr:last-of-type'));
browser.executeScript("return arguments[0].offsetTop;", lastRow.getWebElement()).then(function (offset) {
browser.executeScript('arguments[0].scrollTop = arguments[1];', div.getWebElement(), offset).then(function() {
// assertions
});
});
Или для получениясловарь всех атрибутов элемента (Python):
driver.execute_script('var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;', element)
Но API WebDriver также имеетexecute_async_script()
который я лично не использовал.
Какие варианты использования он охватывает? Когда я должен использоватьexecute_async_script()
вместо обычногоexecute_script()
?
Вопрос специфичен для селена, но не зависит от языка.