Sto cercando di acquisire familiarità con il nuovo browser web selenio rubino poiché sembra più intuitivo per lo più rispetto alla versione precedente del selenio e del driver del rubino è andato con questo. Inoltre, ho avuto problemi a far funzionare il vecchio selenio con Ruby 1.9.1 in Windows, quindi ho pensato di cercare un'alternativa. Finora ho fatto questo con il mio script:Come impostare un'opzione come selezionata utilizzando il client Selenium WebDriver (selenio 2.0) in rubino
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")
Quindi, fondamentalmente sto accedendo al mio sito e cercando di aggiungere una voce di istruzione al mio profilo utente .. Ho un riferimento a una casella di selezione con opzioni (nella variabile country_select) e ora voglio selezionare un'opzione con un determinato valore .. Non vedo come farlo nel nuovo client .. L'unica cosa che posso pensare di fare è scorrere tutte le opzioni fino a quando non trovo quello che voglio, e poi chiamo execute_script: http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Driver.html#execute_script-class_method metodo per impostare l'Indice selezionato.
C'è un altro modo per farlo? Nella Java API per il selenio 2.0/WebDriver qui: http://seleniumhq.org/docs/09_webdriver.html c'è un esempio di fare questo
Select select = new Select(driver.findElement(By.xpath("//select")));
select.deselectAll();
select.selectByVisibleText("Edam");
Non sembra che la versione ruby ha questa caratteristica anche se a meno che non mi manca qualcosa. Qualsiasi aiuto sarebbe apprezzato.
Questo non sembra funzionare, ho provato country_select = driver.find_element (: xpath, "// selezionare [id = 'address_country']/option = 'Austria'") country_select.select e che didn non fare nulla Penso che il metodo select sia come chiamare select() in javascript (mette a fuoco in un campo ed evidenzia il testo) –
Hai provato prima a ottenere l'elemento select, poi a scorrere le opzioni di WebElement e chiamare il metodo select sul WebElement che vuoi ? – pnewhook
pnewhook capito bene. Ecco il codice Ruby equivalente: https://gist.github.com/777516 Se la selezione di Elemento # non funziona, provare a provare l'interruttore # dell'elemento. Se ritieni che l'API sia di livello troppo basso, potresti voler controllare la gemma watir-webdriver come un'API alternativa alla stessa tecnologia. – jarib