Содержание
Автотесты с помощью Selenium webdriver
Ожидание
Ожидать максимум 500 мс, пока не появится элемент:
driver.wait(until.elementLocated({css: '[data-test="create-new"]'}), 500);
или не загрузится страницы, содержащая в URL подстроку:
driver.wait(until.urlContains('?view=form'), 500);
или полный URL:
driver.wait(until.urlIs('http://site.ru/catalog/'), 500);
Просто выждать 500 мс, например, после щелчка на «закрыть» colorbox:
driver.sleep(500);
Действия
Щелчок
Щелкнуть по элементу:
driver.findElement({css: '[data-test="create-new"]'}).click();
Если элемент находится за пределами «видимости» окна браузера (требуется проскроллить страницу до него), то click
не будет работать. Поэтому скроллими и кликаем:
driver.executeScript("$('html, body').animate({scrollTop: $('.js-signform [type=\"submit\"]').offset().top}, 0);"); driver.findElement({css: '.js-signform [type="submit"]'}).click();
Заполнить текстом
Заполнить поле типа input
или textarea
, текст добавляется в конец:
driver.findElement({css: '[name="email"]'}).sendKeys("test@test.ru");
Очистить поле:
driver.findElement({css: '[name="email"]'}).clear();
Выбрать файл
driver.findElement({css: '[name="VFile"]'}).sendKeys(__dirname + '/../files/test.xlsx');
Выбрать из выпадающего списка
Выбрать опцию option
выпадающего списка select
и запустить действия, которые происходят при смене с помощью браузерного JavaScript с jQuery на странице:
driver.executeScript("$('[name=\"docSetType\"]').val('1').trigger('change')");
Если список организован через HTML + JS, то «вручную» его раскрываем:
driver.executeScript("$('.js-doc-confirm').first().parentsUntil('.actions').parent().css({'max-height': '500px', '-webkit-transform': 'none', '-webkit-transform-origin': 'none'});");
Закрыть alert
driver.switchTo().alert().then( function() { // закрыть driver.switchTo().alert().accept(); }, function() { // если не было alert assert(false === 'Должно быть предупреждение alert'); } );
JavaScript
Запустить JavaScript и получить результат:
driver.executeScript("var retJSVar = {}; \ retJSVar.text = $('[name=\"headInn\"]').siblings('.js-signform-alert').text(); \ return retJSVar;").then( function(ret) { assert(ret.text == 'Неправильно указано ИНН. Правильный формат: 10 или 12 цифр. Пример: 1234567890'); });
Проверяем существование ресурса по адресу (полезно, когда он не доступен без авторизации):
driver.executeScript("var retJSVar = {}; \ retJSVar.UriThumbnail = $('.js-sign-thumbnail-img a').attr('href'); \ $.ajax({url: retJSVar.UriThumbnail, type: 'GET', cache: false, async: false, \ complete: function (XMLHttpRequest, textStatus) {retJSVar.thumbnailCode = XMLHttpRequest.status;} }); \ return retJSVar;").then( function(ret) { assert(ret.thumbnailCode == 200); });