web-dev-qa-db-fra.com

Comment appuyer/cliquer sur le bouton avec Selenium si le bouton n’a pas l’ID?

J'ai 2 boutons Annuler et Suivant sur la même page mais il n'y a qu'un seul identifiant (voir le code ci-dessous). Je voulais appuyer sur Suivant, mais à chaque fois, le bouton Annuler est identifié, mais pas le bouton Suivant. Comment résoudre ce problème?

<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>
26
ChanGan

Dans Selenium IDE, vous pouvez faire:

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

Cela devrait bien fonctionner.

17
faramka

Utilisez xpath selector (voici rapide tutorial ) au lieu de 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()

Ou, si vous utilisez Selenium "Vanilla", utilisez simplement le même sélecteur xpath au lieu du bouton id

NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]'
Selenium.click(NEXT_BUTTON_XPATH)
18
Misha Akovantsev

utiliser les attributs text et value au lieu de l'id

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

de même pour Next.

4
user1710861

Pour le bouton Suivant, vous pouvez utiliser xpath ou cssSelector comme ci-dessous:

xpath pour le bouton Next: // input [@ value = 'Next']

cssPath for Next button: entrée [valeur = Suivant]

2
Ripon Al Wasim

Vous n'avez pas besoin d'utiliser uniquement l'identifiant en tant que localisateur d'éléments. Vous pouvez utiliser plusieurs méthodes pour rechercher un élément. Lisez cet article et choisissez le meilleur pour vous.

1
faramka

Vous pouvez utiliser xpath pour identifier cet élément.

0
Rohit Ware
    You can achieve this by using cssSelector 
    // Use of List web elements:
    String cssSelectorOfLoginButton="input[type='button'][id='login']"; 
    //****Add cssSelector of your 1st webelement
    //List<WebElement> button 
    =driver.findElements(By.cssSelector(cssSelectorOfLoginButton));
    button.get(0).click();

    I hope this work for you
0
mkumar0304