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

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

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

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

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

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

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

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

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

1 лайк

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

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

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

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

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

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

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

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

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

Спасибо!

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

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