so wählen Sie das erste element aus einer dropdown-Liste. RoR/Capybara/Selen
Also dieser code funktioniert einwandfrei, bis ich vor kurzem aktualisiert meine selenium webdriver:
When /^I search for (.*)$/ do |term|
term = " " if term == "blank"
step "I fill in search with #{term}"
within(".navbar-search") do
page.find(:css, "li:first").click
end
end
Ich aktualisiert, und jetzt bekomme ich die folgende Fehlermeldung:
An invalid or illegal string was specified (Selenium::WebDriver::Error::UnknownError)
./features/step_definitions/search_steps.rb:5:in `block (2 levels) in <top (required)>'
./features/step_definitions/search_steps.rb:4:in `/^I search for (.*)$/'
features/search_friend.feature:13:in `When I search for <term>'
Hier ist der Gurken-feature:
@javascript
Scenario Outline: The search bar
Given I login
And I have a contact named ABC
And I have a contact named DEF
And I have a contact named GHI
When I search for <term>
Then I should see the message <message>
Examples:
| term | message |
| ... some examples ... | |
InformationsquelleAutor wachichornia | 2013-05-26
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie aktualisiert nicht nur Webdriver aber auch Capybara.
Capybara 2.1 verwendet jetzt die Treiber die Implementierung von CSS-Selektoren. Im Falle von Selenium Webdriver es bedeutet, dass die browser-Implementierung verwendet wird.
:first
pseudo-Selektor ist nicht standard und wird nicht unterstützt von den Browsern, so dass Ihre CSS-Selektor nicht gültig ist.Bisher hat es funktioniert, weil Capybara konvertiert CSS-selector XPath mit Nokogiri. Nokogiri unterstützt
:first
pseudo-Selektor.So sollten Sie Ihren ungültige CSS-Selektor, um etwas gültiges wie:
page.first(:css, 'li').click
page.find(:css, 'li', match: :first).click
(die Differenz zwischen der vorherigen Variante und diese ist, dass diese Variante wartet-element auf der Seite zu sehen, aber das erste, das man nicht warten. Sehen dieser Abschnitt von Capybara README um mehr Informationen zu bekommenmatch
)page.find(:css, "li:first-child").click
page.find('li:first-child').click