如何在Selenium Web驱动程序中选择Kendo下拉菜单?

时间:2019-12-26 10:39:31

标签: java selenium selenium-webdriver

我是硒网络驱动程序的初学者。我无法选择剑道下拉列表

这是我的代码:

Select profcat = new Select (driver.findElement(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/div/div[1]/div/div[1]/div[4]/div/div/div/span/span/span[1]")));
profcat.selectByIndex(2);
<div unselectable="on" style="overflow: auto; position: relative; height: auto;">
   <ul unselectable="on" class="k-list k-reset" tabindex="-1" aria-hidden="true" id="ddlCategoryTy_listbox" aria-live="polite" data-role="staticlist" role="listbox">
      <li tabindex="-1" role="option" unselectable="on" class="k-item k-state-selected k-state-focused" data-offset-index="0" id="f3776f55-02cc-45e9-9dd1-b32f24d457bd">Select</li>
      <li tabindex="-1" role="option" unselectable="on" class="k-item" data-offset-index="1">Room</li>
      <li tabindex="-1" role="option" unselectable="on" class="k-item" data-offset-index="2">Health Club</li>
      <li tabindex="-1" role="option" unselectable="on" class="k-item" data-offset-index="3">Laundry</li>
      <li tabindex="-1" role="option" unselectable="on" class="k-item" data-offset-index="4">Recreational Activities</li>
   </ul>
</div>

2 个答案:

答案 0 :(得分:2)

要从下拉列表中选择一项,您将需要编写XPath来查询要选择的元素的文本。我还会在您希望单击的选项上调用WebDriverWait,以说明下拉选项的任何延迟加载时间:

// expand the dropdown -- click on the div, may need to click something else
driver.findElement(By.xpath("//div[ul[@id='ddlCategoryTy_listbox']]")).click()

// wait on an option to exist
WebDriverWait wait = new WebDriverWait(driver, 10);
optionToClick = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//li[text()='Health Club']")));

// click the option
optionToClick.click();

您需要导入org.openqa.selenium.support.ui.ExpectedConditionsorg.openqa.selenium.support.ui.WebDriverWait才能使其正常工作。

上面的代码单击div元素以展开下拉列表,然后使用XPath选择选项“ Health Club”(健康俱乐部),该XPath可以查询li文本。您可能需要更新用于扩展下拉菜单的选择器-根据您提供的HTML,我无法确定打开下拉菜单以显示选项的元素。

答案 1 :(得分:0)

Kendo UI没有通常的下拉菜单。因此您的代码将无法使用。您需要使用下一个算法:

  1. 单击按钮打开下拉菜单。
  2. 等待元素的存在,其中包含下拉列表中的值列表(我在chrome中使用debug来获取该元素)。
  3. 在显示的值列表中进行迭代,然后单击所需的值。

我正在使用这种算法来处理此类下拉菜单。