2012-01-15 16 views
24

Ho 2 pulsanti Annulla e pulsante Avanti sulla stessa pagina ma ha solo un id (vedere il codice seguente). Volevo premere Avanti, ma ogni volta identifica il pulsante Annulla solo il pulsante Avanti. Come risolvere questo problema?Come premere/fare clic sul pulsante utilizzando Selenium se il pulsante non ha l'ID?

<td align="center"> 
    <input type="button" id="cancelButton" value="Cancel" title="cancel" class="Submit_Button" style="background-color: rgb(0, 0, 160);"> 
    <input type="submit" value="Next" title="next" class="Submit_Button"> 
</td> 
+2

Che cosa stai usando? Selenium RC o WebDriver (Selenium 2)? Quale lingua stai usando? Giava? C#? Pitone? o cosa? –

risposta

15

di selenio IDE si può fare:

 
Command | clickAndWait 
Target | //input[@value='Next' and @title='next'] 

dovrebbe funzionare bene.

+0

Eccellente ... sta funzionando .. :) – ChanGan

18

Usa xpath selettore (qui è veloce tutorial) invece di id:

#python: 
from selenium.webdriver import Firefox 

YOUR_PAGE_URL = 'http://mypage.com/' 
NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]' 

browser = Firefox() 
browser.get(YOUR_PAGE_URL) 

button = browser.find_element_by_xpath(NEXT_BUTTON_XPATH) 
button.click() 

Oppure, se si utilizza Selenio "vanilla", basta usare lo stesso selettore XPath invece del pulsante ID:

NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]' 
selenium.click(NEXT_BUTTON_XPATH) 
1

Non è necessario utilizzare solo identificatori come locatori di elementi. Puoi usare alcuni modi per trovare un elemento. Leggi this article e scegli il migliore per te.

+0

Questo collegamento non ha risolto il mio problema .. – ChanGan

+0

Ma dopo aver letto dovresti sapere cosa fare, quando l'elemento non ha un attributo 'id'. – faramka

0

È possibile utilizzare xpath per identificare quell'elemento.

+0

se uso xpath, premendo sempre Annulla anziché Avanti. – ChanGan

+0

Quale xPath hai usato e non ha funzionato? – faramka

2

Per pulsante Avanti è possibile utilizzare XPath o CssSelector come di seguito:

XPath per pulsante Avanti: // ingresso [@ value = 'Avanti']

cssPath per pulsante Avanti: ingresso [value = Avanti ]

3

utilizzare il testo e il valore attributi al posto del id

driver.findElementByXpath("//input[@value='cancel'][@title='cancel']").click(); 

in modo simile per Avanti.

Problemi correlati