Comment appuyer/cliquer sur le bouton en utilisant Selenium si le bouton n'a pas L'Id?

J'ai 2 boutons Annuler et bouton Suivant sur la même page mais il n'a qu'un seul id (voir le code ci-dessous). Je voulais appuyer sur Suivant mais chaque fois qu'il identifie le bouton Annuler seulement 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>
24
demandé sur ChanGan 2012-01-15 21:18:06

7 réponses

Dans Selenium IDE vous pouvez faire:

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

Cela devrait bien fonctionner.

16
répondu faramka 2012-01-16 13:15:41

Utilisez XPath selector (voici le tutoriel rapide ) 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 du sélénium "vanille", utilisez simplement le même sélecteur xpath au lieu de button id:

NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]'
selenium.click(NEXT_BUTTON_XPATH)
18
répondu Misha Akovantsev 2016-04-19 16:53:30

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

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

De même pour Next.

4
répondu user1710861 2014-02-16 05:44:30

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

Xpath pour le bouton Suivant: //input[@value= "Suivant"]

CssPath pour le bouton Suivant: input [value = Next]

2
répondu Ripon Al Wasim 2013-01-16 04:52:52

Vous n'avez pas besoin d'utiliser uniquement l'identifiant comme Localisateur d'éléments. Vous pouvez utiliser quelques façons de trouver un élément. Lisez Cet article et choisissez le meilleur pour vous.

1
répondu faramka 2012-01-16 08:14:53

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

0
répondu Rohit Ware 2012-01-16 11:33:15
    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
répondu mkumar0304 2018-06-01 12:54:18