Если вам действительно нужно выполнить JavaScript в момент загрузки, то я бы рекомендовал следующее:
Самый правильный вариант: договорится с разработчиками и попросить их вставить нужный файл
Использовать прокси-сервер, например, Fiddler через FiddlerScript может модифицировать страницу на лету, так что браузер получит уже модифицированную версию.
Цель действия:
Данный JS считает количество незавершенных запросов к серверу, и на основе него я проверяю можно работать со страницей или еще подождать.
Обычные средства Selenium по ожиданиям не дают нужного результата.
Обычные средства Selenium по ожиданиям не дают нужного результата.
Ну, бывает конечно, но с хаками я бы не стал торопится.
Раз вы пишете на Джаве, поэкспериментируйте со Селенидой (http://selenide.org/), в которой элементы ожидаются по умолчанию.
Если вы все таки решитесь применить ваш хак, то вам нужно вставить свой код первым в head страницы, так что мой предыдущий совет с прокси сервером остается в силе.
Используя этот хак вы должны быть на 100.00% быть уверенным, что он ничего не ломает в самом приложении и не провоцирует ухудшения перформанса во всех поддерживаемых браузерах.
Эты методы не являются средствами Selenium. Почитайте о implicit и explicit waits - Как работать c ожиданиями от WebDriver API – XP Injection
Вам скорее всего нужен explicit wait, типа этого: WebDriverWait wait = new WebDriverWait(this.driver, time); wait.until(ExpectedConditions.visibilityOf(element);
или WebDriverWait wait = new WebDriverWait(this.driver, time); wait.until(ExpectedConditions.elementToBeClickable(element);
С этого и надо было начинать, не вводя комьюнити в заблуждение, что мол все перепробовали…
Воспользуйтесь советом @Ostap_Oleksyn для начала. Если не поможет, можно написать кастомный ExpectedCondition, который будет ждать завершения активности jQuery.
П.С. Подобные темы уже не раз обсуждались на данном ресурсе.