• Как начать тестирование сайта?

    @Talik0507
    Работаю, Живу
    Интересуют вопросы: Как вообще должно выглядеть тестирование?(теста на каждый блок\модуль сайта, или на каждую страницу, или на целый сайт),


    Тут как пожелаете. Конечно в первую очередь нужно написать тест на критичные бизнес-процессы.
    Затем на менее критичные и т.д. на сколько позволяет время и бюджет

    при каждом обновлении сайта запускать тесты или раз в день\неделю,

    По хорошему, нужно запускать при каждом изменении, но тут все зависит от того, какие именно были изменения.
    У нас автотесты бегают принудительно каждую ночь на свежесобранной чистой среде. + по запросам комитов

    куда тесты пишут о своем успехе\проблемах, и кто читает этот "лог".

    Тут надо понять, каким образомы вы собираетесь их запускать. Существует куча фреймворков Тестранеров.
    У них обычно есть методы логирования результатов тестов. Но есть и фреймворки для сбора отчетов типа Alura
    Ответ написан
    Комментировать
  • Не могу понять что хочет от меня selenium?

    @Talik0507
    Работаю, Живу
    selenium.common.exceptions.WebDriverException: Message: 'IEDriverServer.exe' exe


    Эта ошибка говорит о том, что не находится сам драйвер.
    Его нужно скачать предварительно и указать полный путь в переменной окружения PATH.
    Ну или при инициализации драйвера в тестах, явно указать executablePath
    Ответ написан
  • На чем лучше запускать селениум тесты php или js?

    @Talik0507
    Работаю, Живу
    и еще попутно вопрос - как определить можно ли физически кликнуть на кнопку? те проверить что она видимая, что она не перекрыта другим элементом у которого больше з-индекс или что она в пределах экрана?
    также с модальным окном - как проверить что модал появился на экране?


    1) Проверка видимости, действительно можно сделать через ожидания, как показал Дмитрий @Sad_Bro
    Ибо для селениума проверка видимости - это проверка кликабельности по факту.

    что она в пределах экрана?

    не знаю зачем это нужно, но можно проскролиться к нужному элементу, Селениум обладает набором методов.
    Если их не хватает, можно всегда обратиться к JS

    ак проверить что модал появился на экране?

    Найти этот класс.
    например:

    List list = driver.findElements(By.cssSelector("modal"));
    if (list.size() > 0){
    -- code
    } else {
    -- code
    };
    Ответ написан
  • Как получить содержимое страницы?

    @Talik0507
    Работаю, Живу
    Ни разу не понял оборота речи.

    Если я правильно понял, то вы заходите на страничку логина и авторизуетесь. Судя по коду, вы тыкаете на ссылку для открытия формы авторизации.

    Самое простое - это найти и заполнить необходимые поля и тыкнуть на кнопку логина:
    пример.
    driver.find_element_by_cssSelector('#username').senKeys("login");
    driver.find_element_by_cssSelector('#password').senKeys("pass");
    driver.find_element_by_cssSelector('#LoginButton').click();

    Если же в будущем планируется, что тесты будут для большого проекта, то сразу почитайте о PageObject
    Ответ написан
  • Нужны ли логи для тестов?

    @Talik0507
    Работаю, Живу
    Ну, реализовать логи в тестах никто не мешает, скажем для отладки. НО!!! согласно практике, тесты должны проверять одну функциональность, т.е. и проверки asserts должны быть направлены только на проверяемый объект.

    Если где-то нужна дополнительная проверка в момент подготовки данных, то так же asserts помогают.
    Ответ написан
    Комментировать
  • Selenium, как дождаться перезагрузки страницы?

    @Talik0507
    Работаю, Живу
    А вы не пробовали смотреть в сторону реализации ожиданий?
    После авторизации пишите ожидание появления нужного элемента (ссылки) и только после этого клик.
    https://seleniumhq.github.io/selenium/docs/api/jav...

    WebElement dynamicElement = (new WebDriverWait(driver, 10))
    .until(ExpectedConditions.presenceOfElementLocated(By.id("dynamicElement_id")));

    Селениум сам отслеживает полную загрузку страницы, потому можно попробовать изменить ожидание загрузки страницы.
    driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
    Ответ написан
    Комментировать
  • Как узнать что браузер открытый веб-драйвером все еще открыт?

    @Talik0507
    Работаю, Живу
    а почему не воспользоваться хендалами окна? при открытии получаем хендл окна и сохраняем. Если нужно проверить, открыт ли браузер, запрашиваем у драйвера все хендлы и проверяем, есть ли среди них ваш запомненый.
    Ответ написан
    Комментировать
  • Как выбрать элемент из selecta?

    @Talik0507
    Работаю, Живу
    пример страницы можно?
    на странице обычный селект? или select2
    Ответ написан
  • Почему вываливается StaleElementReferenceException?

    @Talik0507
    Работаю, Живу
    могу только предположить, в момент ожидания видимости (By.XPATH, '//*/li//*[contains(text(), "%s")]' % text) сам элемент меняется, потому однажды найденный элемент протухает. Соответственно, при очередной проверке видимости вебдрайвер просто уже не находит елемента по найденной ранее ссылке на объект
    Ответ написан
    1 комментарий
  • Как установить chrome, ie WebDriver selenium?

    @Talik0507
    Работаю, Живу
    А в настройках драйвера в коде тестов что?
    Пример инициализации драйвера в коде запуска теста приведите.
    Для разных браузеров используются свои классы.
    Ответ написан
    Комментировать
  • Можно ли заблокировать работу Selenium Webdriver?

    @Talik0507
    Работаю, Живу
    пример сайта и ошибки в студию.
    Ответ написан
    Комментировать
  • Как правильно использовать переключение между iframe-ами в Page obj. Pattern?

    @Talik0507
    Работаю, Живу
    Пример страницы можно?
    и пример разбиения ваших классов
    Ответ написан
    Комментировать
  • Как передвинуть курсор мыши на выбранный элемент в Selenium Javascript?

    @Talik0507
    Работаю, Живу
    в наборе Selenium есть метод moveToElement(WebElement toElement)
    соответственно
    для Java будет выглядеть так
    driver.moveToElement(toElement)
    Ответ написан
    Комментировать
  • Как с помощью Selenium сравнивать скриншоты?

    @Talik0507
    Работаю, Живу
    Интересная задача, но Selenium не тестовый фреймворк, а всего лишь API для работы с браузерами по средствам веб-драйверов под каждый браузер.

    Соответственно, если уж возникает необходимость использовать Selenium, то придется использовать библиотеки для работы и сравнения картинок и подключать их к проекту тестов, и использовать их.
    Ответ написан
    Комментировать
  • Как проще всего определить локаторы для тестирования AngularJS приложение с помощью Protractor?

    @Talik0507
    Работаю, Живу
    (собственно из-за этого и не стали использовать Java+Selenium, очень мало контроля над самими процессами Ангуляра при тестировании).

    Ну, спорный вопрос... Придется пошаманить, но контроля предостаточно.

    ПО поводу поиска локаторов. Искать локаторы по шаблону наполнения исходной страницы, наверное, можно. Но на сколько я видел Predactor - это фреймворк, для облегчения работы с элементами... Там , конечно, добавлено ряд методов, облегчающие поиск (но не сильно). Тем более, если какие-то элементы формируются динамически, в зависимости от условий, то проще писать тесты, основываясь на локаторах финальных страниц проекта.

    По поводу "browser.waitForAngular();" - это всего лишь реализованное ожидание ждущее инициализации определенных элементов ангуляром. Если, будут тормозить какие-то другие аспекты - этот метод уже не сработает... потому, доверять можно. но без шаманств все -равно, в определенных случаях не обойтись.
    Ответ написан
    Комментировать
  • Как запустить Selenium Builder в Firefox (ошибка из-за geckodriver)?

    @Talik0507
    Работаю, Живу
    что касается ошибки, то она явно связано с отсутствием нужного драйвера на машине, где производите запуск тестов.
    Обратите внимание на версионность драйвера, сервера и API, начиная с какой-то версии от IDE вообще ушли
    Ответ написан
    Комментировать
  • Как массово делать скриншоты веб страниц?

    @Talik0507
    Работаю, Живу
    Разверните суть проблемы. Не совсем понятно для чего, и почему так много нужно скриншотить
    Ответ написан
    Комментировать
  • Проблематично-ли поддерживать и писать UI-tests на JS + Selenium Web Driver?

    @Talik0507
    Работаю, Живу
    Вот прям распирает спросить, а зачем JS, если проект написан на C# ?
    Selenium поддерживает работу с веб драйверами и на C#.

    "Писать автотесты" предполагает наличие основ программирования.
    Чтобы дать возможность писать автотесты людям, малознакомым с программированием на каком -то языке, можно использовать разные фреймфорки, которые все -равно придется настраивать и адаптировать под проект. А это процесс постоянный. А все это предполагает знаний и скилов в программировании и не только.

    далее по пунктам:

    1. Дело 15-30 минут даже на чистом Selenium без фрейворков.
    2. для C# не писал, но для Java использую Selinide (синтаксис простой, и достаточно стабильные тесты получаются). НО!!! Без шаманства проходят только чистые проекты без всякий красивых и сложных веб элементов и переходов.
    3. Автотесты не должны писать монкитестеры или функциональщики без опыта программирования. Тут ничего не сделаешь.
    4. Для старта достаточно скачать вебдрайвер, и привязать API на нужном из доступном языке. 2-10 тестов можно написать и так, но для качественных и стабильных тестов нужно будет допиливать свои хелперы ( а это писать и дописывать код).
    Ответ написан
    Комментировать
  • Как Zabbix подсчитать время между двумя событиями в логе?

    @Talik0507
    Работаю, Живу
    Ох... приходилось сталкиваться с такой задачей. Нужно было мониторить время отработки метода сервиса (долгий) по логу... Вначале писался скрипт на машине, где хранится лог, который брал последнюю строку с паттерном финиша - вычленял время, затем брал из этого же лога последнюю сроку с паттерном старта (вычленял время), далее производил расчеты и выдавал результат. К заббиксу подвязывал через пользовательские параметры агента.

    Затем, решили, что время отработки будет считать сам метод, а в лог писать строку с паттерном финиша выполнения + время. Далее по той же схеме (через UserParams однострочной командой вытаскивали время и отдавали агенту).
    Ответ написан
    Комментировать