Как выбрать пункт из всплывающего меню с селеном? - PullRequest
0 голосов
/ 18 января 2019

Как я могу выбрать элемент из menu-popup? Например я хочу выбрать Мистер

Это код сайта:

<div class="menu-popup-items"><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">Not selected</span></span><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">**Mr.**</span></span><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">Mrs.</span></span><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">Ms.</span></span><span class="menu-popup-item menu-popup-no-icon "><span class="menu-popup-item-icon"></span><span class="menu-popup-item-text">Dr.</span></span></div>

Ответы [ 3 ]

0 голосов
/ 18 января 2019

Я думаю, вам стоит попробовать этот XPath

"//*[@class='menu-popup-items']" 

это поможет вам найти каждый элемент в вашем теге div

А если вы ищете конкретный текст, то он поможет вам найти элемент во всплывающем меню

 //*[contains(text(),'Mr.')]

Он найдет вашего мистера во всплывающем меню

0 голосов
/ 18 января 2019

Я объясню на моем примере

      //In Page Object File
      public static WebElement idProof(WebDriver driver)
        {
            WebElement element=null;
            WebDriverWait wait=new WebDriverWait(driver, 50);
            element=wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='panel-body']//div[3]//div[2]//div[1]//a[1]//span[1]")));
            return element;
        }

     ` `//In Test File
      WebElement idProof = Page1.idProof(driver);
      idProof.click();

       //In Test File
       WebElement voterId = FarmerRegPage.idProofVoterId(driver, "Voter id");
       voterId.click();

  // In Page Object File
  public static WebElement idProofVoterId(WebDriver driver, String idVal)
{
    WebElement element=null;
    WebDriverWait wait=new WebDriverWait(driver, 50);
    element=wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//li[contains(text(),'" + idVal +"')]")));
    return element;
}

переменная String idVal - это значение, которое я передаю при раскрытии

Фрагмент HTML: - <span>Select an Option</span>

У нас такая же ситуация, и я хотел бы сказать вам, что вы должны сначала щелкнуть в раскрывающемся списке, а затем просто изменить xpath span на li и, оставив его как есть, отправить имя элемента, который необходимо выбрать, этодолжно работать нормально

0 голосов
/ 18 января 2019

Прежде чем ответить на вопрос, я хотел бы отметить, что если вы сможете добавить идентификатор для каждого пункта меню, это сделает поиск более простым и более производительным.

В этом сценарии вы можете сделать:

WebElement result = driver.findElement(By.id("myId"));

Если вы не можете добавить идентификатор, вы можете сделать что-то вроде этого:

    WebElement result = driver.findElements(By.className("menu-popup-item-text")).stream()
                .filter(webElement -> webElement.getText().contains("Mr."))
                .findFirst().get();
...