Comment cliquer sur les résultats de recherche de texte dans Selenium WebDriver
Comment cliquer sur un texte spécifique des résultats de la zone de texte de recherche dans Selenium WebDriver. Dans mon cas, la zone de texte de recherche est "École".
J'envoie les clés "RGSchool1" dans la zone de texte "School", puis je souhaite cliquer sur "RGScool" lorsqu'il apparaît comme résultat sous la zone de texte.
J'ai essayé tout ce qui suit approché en lançant "org.openqa.selenium.NoSuchElementException"
- Saisir du texte et tabuler
- Saisissez du texte et envoyez la touche Entrée
- Chemin absolu - /html 1 /body 1 /div[7]/ul 1 /li 1 /div 1 /span 1
- Chemin relatif - //span[@class='select2-match']
Corps HTML :
<div class="select2-result-label" style="" xpath="1">
<span class="select2-match">RGSchoo</span>
l1 [rgschool1]</div>
Code : // Recherche d'éléments
@FindBy(id = "s2id_User_OrgId")
public WebElement clickJurisdiction;
@FindBy(xpath = "/html[1]/body[1]/div[6]/div[1]/input[1]")
public WebElement keyInJurisdiction;
@FindBy(xpath = "//div[@id='s2id_User_OrgUnitId']//a[@class='select2- choice']")
public WebElement clickSchool;
@FindBy(xpath = "/html[1]/body[1]/div[7]/div[1]/input[1]")
public WebElement keyInSchool;
@FindBy(xpath = "/html[1]/body[1]/div[7]/ul[1]/li[1]/div[1]")
public WebElement schoolSearchResult2;
Méthode d'appel :
public void enterNewUserData() {
SeleniumTestHelper.enterText(firstName, Config.getProperty("FirstName"));
SeleniumTestHelper.enterText(middleName, Config.getProperty("MiddleName"));
SeleniumTestHelper.enterText(lastName, Config.getProperty("LastName"));
SeleniumTestHelper.enterText(preferredName, Config.getProperty("PreferredName"));
SeleniumTestHelper.clickOnButton(clickJurisdiction);
SeleniumTestHelper.enterText(keyInJurisdiction, Config.getProperty("Jurisdiction"));
SeleniumTestHelper.enter(keyInJurisdiction);
SeleniumTestHelper.clickOnButton(clickSchool);
SeleniumTestHelper.enterText(keyInSchool, Config.getProperty("School"));
SeleniumTestHelper.clickOnButton(schoolSearchResult2); // It fails here
Merci de m'aider à trouver une solution. Je suis novice dans ce genre de scénario.
Veuillez consulter la capture d'écran ci-jointe.
Capture d'écran avant de saisir les données :

Capture d'écran après la saisie des données
Réponses
Pour localiser l'élément avec du texte en tant que RGSchool1 , vous pouvez utiliser la stratégie de localisation suivante :
Utilisation de cssSelector :
@FindBy(cssSelector = "ul.select2-results div.select2-result-label > span.select2-match") public WebElement schoolSearchResult2;
Utilisation de xpath :
@FindBy(xpath = "//ul[@class='select2-results']//div[@class='select2-result-label']/span[@class='select2-match']") public WebElement schoolSearchResult2;