ChromeDriver не ждет `get ()`?

JavaDoc WebDriver.get() говорит ... the method will block until the load is complete.

Драйвер Firefox ждет, пока весь начальный JavaScript не завершится. Однако ChromeDriver, кажется, возвращается, как только загружается HTML. Это затрудняет тестирование веб-приложений на основе JS, поскольку вы даже не знаете, отображается ли приложение или нет, когда функция возвращается.

Кто-нибудь знает, является ли это ожидаемым поведением, и если да, то как проверить, завершен ли JavaScript?


person billc.cn    schedule 24.04.2015    source источник
comment
Я тестирую большие приложения (сотни тестов) в Selenium для Firefox, Chrome и IE, и у меня нет проблем с тестированием приложений JavaScript. Пожалуйста, приведите воспроизводимый случай, чтобы ответы, которые вы получите, не были просто набором диких догадок или плохих советов (как тот ответ, который вы уже получили).   -  person Louis    schedule 25.04.2015


Ответы (1)


С помощью селена мы обнаружили, что многократный сон между шагами решает около 95 процентов проблем и является единственным надежным способом решения этих проблем. Это делает тесты медленными, но на самом деле, если вы эмулируете браузер, в реальном мире он будет таким же медленным. Вместо того, чтобы тратить уйму времени, пытаясь устранить каждую задержку, поставьте ожидание/сон и продолжайте работу.

person CargoMeister    schedule 24.04.2015
comment
Это худший подход. Никто никогда не должен помещать сон в свое приложение. - person Stan E; 24.04.2015
comment
Если это тестирование, для чего в основном используется селен, это не имеет большого значения. Вы просто эмулируете задержку. Если вы запускаете его на коробке с множеством других приложений, это не так уж хорошо. Но сказать, что вы никогда не должны использовать сон, — это своего рода одна из тех вещей религии кодирования, например, нужно ли опустить скобку до строки ниже начала функции. Сейчас мы пишем несколько сотен сценариев тестирования. Мы проверяем работоспособность приложения. Совершенно неважно, используем мы сон или нет. Если это так для ОП, то зачем тратить время. - person CargoMeister; 24.04.2015
comment
Да ладно, это не религиозные вещи. Это просто практические вещи, которые действительно имеют значение, пока у вас есть более 1 теста. Сон непригоден в большинстве случаев, вы не можете знать, достаточно ли этого сна или нет, вы потеряете много времени, если у вас будет ЛЮБОЙ рабочий процесс, включающий автоматическое тестирование пользовательского интерфейса. Это пустая трата вашего будущего времени, чтобы использовать сон в ваших текущих тестах. - person Stan E; 25.04.2015
comment
Вы можете настроить неявное ожидание, чтобы избежать ввода sleep, и это, вероятно, увеличит скорость тестирования, поскольку тест будет продолжен, как только элемент будет доступен. Если вы хотите подождать определенное время, вы можете просто установить явное время для выбранного элемента. - person A Petrov; 26.04.2015
comment
Модуль selenium-webdriver/lib/ обещание должно сделать сон бесполезным, не так ли? - person lalebarde; 20.12.2016