Cara mengklik hasil teks pencarian di selenium WebDriver

Aug 19 2020

Cara mengklik teks tertentu dari hasil kotak teks pencarian di selenium WebDriver. Dalam kasus saya, kotak teks pencarian adalah "Sekolah".

Saya mengirim kunci "RGSchool1" di kotak teks "School" dan kemudian saya ingin mengklik "RGScool" ketika muncul sebagai hasil di bawah kotak teks.

Saya mencoba semua di bawah ini didekati dengan melempar "org.openqa.selenium.NoSuchElementException"

  1. Masukkan teks dan tab keluar
  2. Masukkan teks dan kirim tombol enter
  3. Jalur absolut - / html 1 / body 1 / div [7] / ul 1 / li 1 / div 1 / span 1
  4. Jalur relatif - // span [@ class = 'select2-match']

Badan HTML:

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

Kode: // Menemukan elemen

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

Metode panggilan:

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

Tolong bantu saya untuk menemukan solusi. Saya baru dalam skenario semacam ini.

Silakan lihat tangkapan layar terlampir di bawah ini.

Tangkapan layar sebelum memasukkan data:

Tangkapan layar setelah memasukkan data

Jawaban

DebanjanB Aug 19 2020 at 14:22

Untuk menemukan elemen dengan teks sebagai RGSchool1 Anda dapat menggunakan Strategi Penunjuk Lokasi berikut :

  • Menggunakan cssSelector :

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

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