2013-12-13 4 views
0

Я использую clj-webdriver, чтобы заполнить форму в моем тестовом примере.Selenium Сроки: поля формы заполнены неправильно

(quick-fill-submit {"#firstname" "Firstnam"} 
        {"#lastname" "Lastnaem"} 
        {"#username" "Username"} 
        {"#password" "Password"} 
        {"#password2" "Password"} 
        {"#roles"  "user"}) 

(click "button#add-user") 

Каждый раз, когда я запускаю этот код в своем тестовом примере, третье значение заполняется пробелом. Я переместил поля и проверил их. Это всегда третье поле.

При выполнении моего тестового теста шаг за шагом в repl он отлично работает, но когда работает через lein test, он терпит неудачу.

Это, похоже, некий вопрос о сроках. Когда я, например, срыв выполнения путем добавления

(wait-until #(= 1 2) 10000) 

между двумя функциями поле заполняется. Простой

(Thread/sleep n) 

не работает в этом случае. Почему Selenium не заполняет форму правильно?

+0

Является ли форму для создания JavaScript? – ponzao

+1

Да, это так. На самом деле это clojurescript. Форма загружается через запрос ajax с сервера. Я получаю вектор векторов с сервера и передаю его через hiccup в клиенте. – Kungi

ответ

1

Обычно вызовы WebDriver и AJAX требуют настройки настроек ожидания. Вы должны попробовать установить implicit-wait на что-то большее, чем 0 (что по умолчанию). Другой вариант - использовать wait-until и предикат, который проверяет наличие элементов.

+0

Я уже установил неявное ожидание до 3 секунд. Я попытаюсь проверить каждый элемент отдельно, а затем обновить свой вопрос. – Kungi

+0

Ожидание каждого элемента отдельно работает. – Kungi

+0

@ Kungi, рад слышать, что у вас это работает! – ponzao

Смежные вопросы