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>
7 réponses
Dans Selenium IDE vous pouvez faire:
Command | clickAndWait Target | //input[@value='Next' and @title='next']
Cela devrait bien fonctionner.
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)
Utilisez les attributs text et value au lieu de l'id
driver.findElementByXpath("//input[@value='cancel'][@title='cancel']").click();
De même pour Next.
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]
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.
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