Понимание выполнения асинхронного скрипта в 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()?

Вопрос специфичен для селена, но не зависит от языка.

Ответы на вопрос(1)

Ваш ответ на вопрос