Как выбрать первое автоматическое предложение с использованием Selenium и Java - PullRequest
1 голос
/ 24 сентября 2019

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

Это кислородное затмение с помощью плагина TestNG

driver.findElement(By.className("searchfilter")).sendKeys("Abilify");// This is working But after that option selection is not working

driver.findElement(By.cssSelector(".list-group-item:first-child")).click(); // Issue is here

HTML-код:

<li class="list-group-item list-group-item-action py-3 tabindex fs-1-1 bg-offwhite" id="indexTab1" href="970-ABILIFY" name="ABILIFY - ARIPIPRAZOLE">ABILIFY - ARIPIPRAZOLE</li>

Ответы [ 3 ]

0 голосов
/ 24 сентября 2019

После того, как вы вызовете sendKeys() с нужным текстом, чтобы выбрать первое автоматическое предложение, вам нужно вызвать WebDriverWait для visibilityOfElementLocated(), и вы можете использовать любую из следующих Стратегий локатора :

  • cssSelector:

    driver.findElement(By.className("searchfilter")).sendKeys("Abilify");
    new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("li.list-group-item-action[name='ABILIFY - ARIPIPRAZOLE'][href$='-ABILIFY']"))).click();
    
  • xpath:

    driver.findElement(By.className("searchfilter")).sendKeys("Abilify");
    new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[contains(@class, 'list-group-item-action') and @name='ABILIFY - ARIPIPRAZOLE'][contains(., 'ABILIFY - ARIPIPRAZOLE')]"))).click();
    
0 голосов
/ 24 сентября 2019

Я думаю, у вас одностраничное приложение.Скорее всего, это угловое приложение JS.Эти SPA постоянно обновляют / отображают параметры в раскрывающемся списке в зависимости от того, что вы вводите в раскрывающемся окне редактирования.

Попробуйте следующий код:

driver.findElement (By.className ("searchfilter")). SendKeys ("Abilify");

driver.findElement (By.Xpath ("// li [содержит (text (), 'Abilify')]")).нажмите ();// Примечание: Selenium всегда работает с первым элементом, если есть несколько совпадений.

Вы также можете параметризовать свое значение выбора, как показано ниже:

String temp = "Abilify";driver.findElement (By.className ("searchfilter")). sendKeys (temp);

driver.findElement (By.Xpath ("// li [содержит (text ()," + temp + ")] ")). click ();

С уважением, Partha

0 голосов
/ 24 сентября 2019

1- Сначала введите ваше слово в поле поиска.

2-, затем подождите, пока элементы поиска не станут видимыми или активными.

 WebDriverWait wait = new WebDriverWait(driver, milliseconds);
 wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//li[@id='indexTab1']"))));

3 - затем нажмите на нужный элемент

driver.findElement(By.xpath("//li[@id='indexTab1']")).click();
...