2017-01-27 5 views
0

Когда я запускаю свои тесты, я не могу получить раскрывающееся меню автозаполнения, пока я физически не нахожусь в поле ввода поиска.Результаты автозаполнения автозаполнения AJAX с помощью Cucumber/Capybara/Selenium

Это тест на огурцы с использованием Selenium Webdriver, и результаты исходят из API автозаполнения URL-адресов Crafty Clicks.

Я попробовал многочисленные версии одного и того же решения от нескольких других сообщений/источников, все из которых выглядят примерно так:

def fill_in_autocomplete(selector, value) 
    page.execute_script(" 
    window.onload = function() { 
     $('#{selector}').focus().val('#{value}').keydown(); 
    } 
    ") 
end 

fill_in_autocomplete "#address_lookup", with: "EC2A 1AF" 

Я также попытался более конкретные KeyDown на основе решений, как:

var e = jQuery.Event("keydown"); 
e.which = 50; 
$("input").trigger(e); 

Я также приостановил тестирование и протестировал каждое из решений вручную в консоли, но снова не работал.

Стоит отметить, что я не использую пользовательский интерфейс jQuery, поэтому решения .autocomplete() актуальны.

Я также использовал sleep на протяжении всего процесса, чтобы разрешить любые проблемы вокруг времени.

У меня нет идей!

ответ

0

Оказывается, это проблема с некоторыми из последних версий Firefox. Сначала мне посоветовали понизить FF, но вместо этого я решил переключиться на chromedriver (я использовал жемчужину chromedriver-helper), и все сработало отлично.

Интересная заметка стороны, одна из причин, по которой мне так долго приходилось это понимать, потому что я пытался вызвать фокус поля ввода на консоли Chrome, чтобы выяснить, какой код мне нужен использовать в моих тестах. Проблема в том, что, видимо, когда вы открываете консоль в Chrome, вы не можете отвлечь внимание от консоли! Так что любой метод, который я пытался использовать, чтобы сосредоточиться на поле ввода с консоли, был переопределен тем фактом, что фокус был сделан на самой консоли. В конце концов я обошел его, поставив код фокуса в событие click и связав его с элементом на странице. Затем я закрыл консоль, нажал на элемент и сфокусировался в поле ввода автозаполнения.

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