Come fare clic sui risultati del testo di ricerca in Selenium WebDriver

Aug 19 2020

Come fare clic su un testo specifico della casella di testo di ricerca produce Selenium WebDriver. Nel mio caso la casella di testo di ricerca è "Scuola".

Sto inviando le chiavi "RGSchool1" nella casella di testo "Scuola" e poi voglio fare clic su "RGScool" quando viene visualizzato come risultato sotto la casella di testo.

Ho provato tutto sotto avvicinato dal lancio di "org.openqa.selenium.NoSuchElementException"

  1. Inserisci il testo e tab
  2. Inserisci il testo e invia il tasto Invio
  3. Percorso assoluto - /html 1 /body 1 /div[7]/ul 1 /li 1 /div 1 /span 1
  4. Percorso relativo - //span[@class='select2-match']

Corpo HTML:

<div class="select2-result-label" style="" xpath="1">
<span class="select2-match">RGSchoo</span>
l1 [rgschool1]</div>

Codice: //Trovare elementi

@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;

Metodo di chiamata:

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

Per favore aiutami a trovare una soluzione. Sono nuovo in questo tipo di scenario.

Si prega di vedere lo screenshot allegato di seguito.

Schermata prima di inserire i dati:

Screenshot dopo l'inserimento dei dati

Risposte

DebanjanB Aug 19 2020 at 14:22

Per individuare l'elemento con testo come RGSchool1 è possibile utilizzare la seguente strategia di localizzazione :

  • Usando cssSelector :

    @FindBy(cssSelector = "ul.select2-results div.select2-result-label > span.select2-match")
    public WebElement schoolSearchResult2;
    
  • Usando xpath :

    @FindBy(xpath = "//ul[@class='select2-results']//div[@class='select2-result-label']/span[@class='select2-match']")
    public WebElement schoolSearchResult2;