Как нажать на выпадающее меню кендо в селеновом вебдрайвере - PullRequest
0 голосов
/ 06 января 2020

Вот мой код селена:

WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//ul[id()='ddlSaleItem_listbox]")));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[id()='ddlSaleItem_listbox']"))).click();

Вот мой HTML код:

<div unselectable="on" style="overflow: auto; position: relative; height: auto;">
   <ul unselectable="on" class="k-list k-reset" tabindex="-1" aria-hidden="true" id="ddlSaleItem_listbox" aria-live="polite" data-role="staticlist" role="listbox">
  <li tabindex="-1" role="option" unselectable="on" class="k-item k-state-focused" aria-selected="true" data-offset-index="0" id="91877f7d-e75f-4218-8f6f-e87aaafe5e27">Health Club  Facility  Quarterly</li>
  <li tabindex="-1" role="option" unselectable="on" class="k-item" data-offset-index="1">Hrealth Club  Half Yearly</li>
   </ul>
</div>

пожалуйста, помогите мне сделать это

Ответы [ 3 ]

1 голос
/ 06 января 2020

Кажется, вы используете неправильный xpath, это должно быть //ul[@id='ddlSaleItem_listbox].

И я бы предложил, если для элемента доступно id, тогда лучше go с ним.

wait.until(ExpectedConditions.elementToBeClickable(By.id("ddlSaleItem_listbox"))).click();

Во время обработки выпадающего меню кендо вы можете столкнуться с проблемой, такой как элемент не получает щелчок, и нет ошибки, или другой элемент получает щелчок вместо ожидаемого. В таком случае вы можете использовать JavascriptExecutor, чтобы выполнить щелчок по намеченному элементу.

например

WebElement element = driver.findElement(By.id("ddlSaleItem_listbox"));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);
1 голос
/ 06 января 2020

Чтобы щелкнуть по раскрывающемуся меню кендо, используя Selenium , вы должны вызвать WebDriverWait для elementToBeClickable(), и вы можете использовать любую из следующих стратегий локатора :

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("ul.k-list.k-reset#ddlSaleItem_listbox"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@class='k-list k-reset' and @id='ddlSaleItem_listbox']"))).click();
    
1 голос
/ 06 января 2020

Использованное вами xpath недопустимо, оно должно быть @id вместо id()

WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@id='ddlSaleItem_listbox']"))).click();
// or using By.id instead of xpath
wait.until(ExpectedConditions.elementToBeClickable(By.id("ddlSaleItem_listbox']"))).click();

Нет необходимости использовать ExpectedConditions.visibilityOfElementLocated, elementToBeClickable уже делает это.

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