Używam kapibara do testowania aplikacji mojej szyny do testowania integracji. W mojej aplikacji jest wiele wywołań Lightbox i Ajax oraz js.Jak dodać czas oczekiwania w scenariuszach kapibara?
@javascript
Scenario: I agree functionatilty
Given I go to the create account page
When I click on button which is given as image "lnkTerms2"
And I follow "i_agree"
Then I go to the create account page
Tutaj w powyższym kodzie lnkTerms2 jest i id, które pomogą w wywołanie funkcji js otworzyć schowek. a ja otrzymuję błąd jak
Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotDisplayedError)
[remote server] resource://fxdriver/modules/atoms.js:9519:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:256:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:305:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:320:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:197:in `unknown'
(eval):2:in `send'
(eval):2:in `click_link'
./features/step_definitions/web_steps.rb:300:in `/^I click on button which is given as image "([^"]*)"$/'
features/Sign_up_process.feature:61:in `When I click on button which is given as image "lnkTerms2"'
Problem jest taki, jak tę funkcję zwaną w webdriver, nie jest uzyskiwanie czas ładowania javascript i ajax połączeń. Lightbox nie otwiera się. Więc proszę zasugeruj mi jakieś rozwiązanie.
Także jeśli Załóżmy, że napisać linia
When I click on button which is given as image "lnkTerms2"
po 4 do 5 wypowiedzi to jest to działa dobrze, jak robi się czas ładowania JS.
To nie jest dobre rozwiązanie, dodaje wymuszone opóźnienie do wykonania testu, jeśli jest ono ponownie używane, może to zająć dużo czasu. Właściwym sposobem rozwiązania tego problemu jest oczekiwanie, aż element będzie widoczny. – Benja
żadna forma ustalonego trybu uśpienia, nawet jeśli przyjmuje wartość ze scenariusza, jest na ogół okropnym pomysłem, chyba że scenariusz dotyczy w rzeczywistości wrażenia użytkownika wymagającego tego określonego czasu (w przeciwieństwie do oczekiwania na aktualizację ekranu itp. , np. "synchronizacja") –