Ответы пользователя по тегу Selenium
  • Возможно ли запустить браузер под управлением Selenium Webdriver на телефоне?

    SlavikF
    @SlavikF
    На мобильных устройствах вам нужен Appium:
    appium.io

    И потом соответственно запускаете не ChromeDriver, вот так:

    mobiledriver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    Ответ написан
  • Грамотно ли я написал тестовый фреймворк selenium+pageObject+testng (нужна критика)?

    SlavikF
    @SlavikF
    Что я увидел не так:

    О том, что такое паттерн Page Object в Священном Писании не записано, поэтому одни считают так правильно, а другие - иначе.

    Основная идея Page Object pattern: низкоуровневое взаимодействие с браузером выносится в Page Objects, а в тестах остаётся в основном бизнес-логика.

    В вашем случае, в методе preCondition вы открываете страницу браузера:
    driver.get("https://mail.ru/");
    Более правильно перенести это в конструктор LoginPage.

    Методы typeLogin, clickEnterPasswordButton, ... возвращают "this". Я это часто вижу. Но смысла в этом мало. Это может иметь какой-то смысл, если действие (нажатие клавиши, клик на кнопку), которое возвращают другую страницу (другого типа), да и в таких случаях зачастую можно не заморачиваться с этим.

    В остальном тесты, в свете page object pattern выглядит нормально.

    В свете логики тестов, у deleteEmail похоже есть предположение, что в ящике уже есть какое-то количество emails. А если нету? тест будет валиться.

    Thread.sleep - это обычно сразу красный флаг. Это 100% признак ненадёжного теста. В местах, где надо ждать (анимации, загрузки, ...) нужно поллить. Можно вот так:
    https://www.selenium.dev/selenium/docs/api/java/or...
    Но на самом деле вариантов много.

    Ещё вы добавили chromedriver.exe в репу.
    Бинарники в репе - это плохо.
    В вашем случае может помочь вот эта библиотека:
    https://github.com/bonigarcia/webdrivermanager

    Ещё у вас репе debug.log
    Его в репе быть не должно. Нужно убрать через .gitignore
    Да .idea туда же.

    Ещё режет глаза слово "popap". Это прям сразу видеть человек английских не знать.
    Ответ написан
    Комментировать
  • Что нужно установить для старта Selenium на ubuntu?

    SlavikF
    @SlavikF
    Php-webdriver - это чтобы управлять Selenium server'ом.

    То есть помимо PHP-webdriver, вам надо поставить ещё Selenium server. И поставить браузер(ы), которыми Selenium будет управлять.
    Кто-то должен запускать Selenium Server - и обычно это не ваш PHP-скрипт.
    Selenium Server требует Java.
    Selenium Server может ставиться на тот же самый хост, можно на другой - Selenium работает по сети.

    При этом, если у вас Ubuntu Server без Desktop, то Selenium Server не сможет запускать там браузеры (потому что нету UI).

    Альтернативно, можно и без Selenium Server - например управлять Chrome Headless. Тогда можно и без UI, то есть чисто на Ubuntu Server, без Desktop.
    По опыту Chrome Headless работает немного надёжнее, чем Selenium Server.

    Сайты по которым я буду ходить требуют javascript, для него что-то нужно ставить на ubuntu?

    Ничего не нужно, потому что javascript исполняется в браузере.
    Ответ написан
    1 комментарий
  • Как запустить браузер с подвязанными куки файлами с помощью Selenium WebDriver?

    SlavikF
    @SlavikF
    Двигать мышку, (за)нажимать кнопки можно с помощью builder:

    Actions builder = new Actions(driver);
    
    builder.keyDown(Keys.CONTROL)
       .click(someElement)
       .moveByOffset( 10, 25 );
       .click(someOtherElement)
       .keyUp(Keys.CONTROL).build().perform();


    Я не знаю, если cookies можно грузить с диска,
    Я их добавляю через код:

    Cookie cookie1 = new Cookie("key1", "value1");
    driver.manage().addCookie(cookie1);
    Cookie cookie2 = new Cookie("key2", "value2");
    driver.manage().addCookie(cookie2);
    Ответ написан
    Комментировать