Cómo hacer clic en los resultados de búsqueda de texto en Selenium WebDriver

Aug 19 2020

Cómo hacer clic en un texto específico del cuadro de texto de búsqueda da como resultado Selenium WebDriver. En mi caso, el cuadro de texto de búsqueda es "Escuela".

Estoy enviando las claves "RGSchool1" en el cuadro de texto "School" y luego quiero hacer clic en "RGScool" cuando aparece como resultados debajo del cuadro de texto.

Intenté todo lo siguiente abordado por arrojar "org.openqa.selenium.NoSuchElementException"

  1. Introducir texto y tabular
  2. Ingrese el texto y envíe la tecla enter
  3. Ruta absoluta - /html 1 /body 1 /div[7]/ul 1 /li 1 /div 1 /span 1
  4. Ruta relativa - //span[@class='select2-match']

Cuerpo HTML:

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

Código: //Encontrar elementos

@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étodo de llamada:

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

Por favor, ayúdame a encontrar una solución. Soy nuevo en este tipo de escenario.

Consulte la captura de pantalla adjunta a continuación.

Captura de pantalla antes de ingresar datos:

Captura de pantalla después de ingresar datos

Respuestas

DebanjanB Aug 19 2020 at 14:22

Para ubicar el elemento con texto como RGSchool1 , puede usar la siguiente estrategia de localización :

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