Как нажать на результаты поиска в Selenium WebDriver

Aug 19 2020

Как щелкнуть определенный текст текстового поля поиска в Selenium WebDriver. В моем случае текстовое поле поиска - «Школа».

Я отправляю ключи «RGSchool1» в текстовое поле «Школа», а затем я хочу нажать на «RGScool», когда он отображается как результаты под текстовым полем.

Я пробовал все нижеприведенные подходы, которые бросали "org.openqa.selenium.NoSuchElementException"

  1. Ввод текста и табуляция
  2. Введите текст и отправьте ключ ввода
  3. Абсолютный путь - / html 1 / body 1 / div [7] / ul 1 / li 1 / div 1 / span 1
  4. Относительный путь - // диапазон [@ class = 'select2-match']

Тело HTML:

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

Код: // Поиск элементов

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

Метод вызова:

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

Пожалуйста, помогите мне найти решение. Я новичок в подобном сценарии.

См. Прилагаемый ниже снимок экрана.

Снимок экрана перед вводом данных:

Скриншот после ввода данных

Ответы

DebanjanB Aug 19 2020 at 14:22

Чтобы найти элемент с текстом как RGSchool1, вы можете использовать следующую стратегию локатора :

  • Использование cssSelector :

    @FindBy(cssSelector = "ul.select2-results div.select2-result-label > span.select2-match")
    public WebElement schoolSearchResult2;
    
  • Использование xpath :

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