Próbuję zapoznać się z nowym selenem-webowym serwerem ruby, ponieważ wydaje się on bardziej intuicyjny niż poprzednia wersja selenu i sterownika ruby to poszło z tym. Poza tym miałem problem ze starszym selenem do pracy z rubinem 1.9.1 w oknach, więc pomyślałem, że będę szukał alternatywy. tej pory robiłem to z moim skryptu:Jak ustawić opcję wybraną przy użyciu klienta Selenium WebDriver (selen 2.0) w rubinie
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.get "https://example.com"
element = driver.find_element(:name, 'username')
element.send_keys "mwolfe"
element = driver.find_element(:name, 'password')
element.send_keys "mypass"
driver.find_element(:id, "sign-in-button").click
driver.find_element(:id,"menu-link-my_profile_professional_info").click
driver.find_element(:id,"add_education_btn").click
country_select = driver.find_element(:name, "address_country")
Więc w zasadzie jestem zalogowaniu do mojej strony i próbuje dodać wpis edukacji do mojego profilu użytkownika .. Mam odwołanie do zaznaczania z opcje (w zmiennej country_select), a teraz chcę wybrać opcję z określoną wartością. Nie widzę sposobu, aby to zrobić w nowym kliencie. Jedyne, co mogę zrobić, to przeglądanie wszystkich opcji do momentu znalezienia tego, którego chcę, a następnie wywołaj metodę execute_script: http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Driver.html#execute_script-class_method , aby ustawić selectedIndex.
Czy jest jakiś inny sposób na zrobienie tego? w API Java dla selenu 2.0/webdriver tutaj: http://seleniumhq.org/docs/09_webdriver.html jest przykładem robi to
Select select = new Select(driver.findElement(By.xpath("//select")));
select.deselectAll();
select.selectByVisibleText("Edam");
nie wydaje się, że wersja Ruby ma tę funkcję, choć chyba mi czegoś brakuje. Każda pomoc będzie doceniona.
nie wydają się działać, próbowałem country_select = driver.find_element (: XPath "// wybrać [id = 'address_country']/option = 'Austria'") country_select.select i że nie zrobił Nic nie rób. Myślę, że metoda select jest jak wywoływanie select() w javascript (skupia się na polu i podświetla tekst) –
Czy próbowałeś najpierw uzyskać wybrany element, następnie iterować przez opcje WebElement i wywołać metodę select w WebElement, którego chcesz ? – pnewhook
pnewhook dobrze. Oto odpowiednik kodu Ruby: https://gist.github.com/777516 Jeśli Element # select nie działa, być może wypróbuj Przełączenie elementu #. Jeśli uważasz, że API jest zbyt niski, możesz sprawdzić gem Watir-Webdriver jako alternatywny interfejs API dla tej samej technologii. – jarib