셀레늄 WebDriver에서 검색 텍스트 결과를 클릭하는 방법

Aug 19 2020

검색 텍스트 상자의 특정 텍스트를 클릭하면 셀레늄 WebDriver가 생성됩니다. 제 경우 검색 텍스트 상자는 "학교"입니다.

"School"텍스트 상자에 "RGSchool1"키를 보내고 텍스트 상자 아래에 결과로 표시되면 "RGScool"을 클릭하고 싶습니다.

나는 "org.openqa.selenium.NoSuchElementException"을 던지면서 아래의 모든 접근을 시도했습니다.

  1. 텍스트 입력 및 탭 아웃
  2. 텍스트를 입력하고 Enter 키를 보냅니다.
  3. 절대 경로-/ html 1 / body 1 / div [7] / ul 1 / li 1 / div 1 / span 1
  4. 상대 경로-// span [@ 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;