Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

chromedriver слишком быстро выплняет действия.

selenium
webdriver
java
Теги: #<Tag:0x00007f7b6303cf38> #<Tag:0x00007f7b6303cdd0> #<Tag:0x00007f7b6303cc90>

(Alexey Bes) #1

Есть сайт на CMS TYPO3 делаю для него тесты на заполнение сайта. На FirefoxDriver все элементарно делается. А вот на ChromeDriver почти перед каждым кликом надо ставить ожидание появления элемента. А работать с другим открывшимся окном вообще не могу. В общем я хотел спорить нет способа сделать ChromeDriver не таким резвым, что бы не писать кучу ожиданий?


(Stan) #2

то есть вы не ждете элементы после перезагрузки страницы?:slight_smile:


(Alexey Bes) #3
(new WebDriverWait(driver, 10))
            .until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='typo3-inner-docbody']"))).click();

Ну в FirefoxDriver подобные ожидания писать не надо. А в Хроме без них не находит элементы


(Konstantin) #4

Есть такая тема, есть. Надо писать ожидалки для хрома.


(Alexey Bes) #5

Ну тогда буду дальше играться. А то не могу в открывшееся окно перейти, пишет no such element только я еще толком не пойму на коком этапе застопорилось при переключении в окно или во фрейм или уже при поиске самого элемента


(Denis) #6

Была похожая проблема, решилась установской ImplicitlyWait в 1 секунду.


(asolntsev) #7

Ну так радоваться же надо, что хром такой молодец, что на нём ваши тесты вдвое быстрее могут бегать. А чтобы не захламлять тесты ожиданиями перед каждой операцией, есть простое средство - Selenide. Он это делает автоматически.


(rmerkushin) #8

Сделайте обёртки над базовыми элементами в которых будет прописано ожидание. Потом это все в Пейдж обджект будете использовать и таких проблем не будет. Ну или как писали выше, воспользуйтесь готовым фреймворком/библиотекой


(Alexey Bes) #9

У меня стоит implicitlyWait даже больше чем секунда, не помагает


(Alexey Bes) #10

Спасибо, попробую


(Alexey Bes) #11

Подскажите пожалуйста как в Selenide переключиться на chrome я в интернете поискал, но у меня так и не получается. Тут почитал https://github.com/codeborne/selenide/wiki/How-Selenide-creates-WebDriver Я так понял нужно написать
Dbrowser=org.openqa.selenium.chrome.ChromeDriver;
Но у меня Dbrowser все время красным горит.


(asolntsev) #12

Что значит красным? Где вы его прописали?
“-Dselenide.browser=chrome” нужно прописать в командной строке (например, “mvn -Dselenide.browser=…” или “mvn -Dselenide.browser=…”) - как там может быть красным?


(Alexey Bes) #13

А я понял, спасибо! А без maven нельзя менять браузер?


(asolntsev) #14

Конечно можно. Есть два способа:

  1. Через командную строку: “ant -Dselenide.browser=…” или “gradle -Dselenide.browser=…”
  2. Прямо в коде: Configuration.browser = "chrome";

(Andriy Yarish) #15

з ІДЕ походу схема наступна : RUN> Run Configuration > Arguments .


(Alexey Bes) #16

Спасибо!


(Tatyana Durova) #17

Если делать по page object, то при вызове каждого блока/страницы прописывается условие его загрузки (и ожидание, пока элемент не появиться), а в тестах уже никакие ожидания вообще писать не надо. Таким образом ожидания достаточно написать только 1 раз для каждого блока/страницы, это не так много.


(Konstantin) #18

где это прописывается ?