如何在Selenium中使用Telerik下拉列表?

问题描述 投票:2回答:1

我刚开始使用Selenium Webdriver。但我坚持使用Telerik下降。

我无法使用SelectElement,因为下拉列表出现在span元素中。如何阅读下拉列表中的所有可用选项,然后进行选择。

添加更多信息:下拉列表由JSON / JQuery填充。 HTML示例如下。 span元素之间的文本根据您从下拉列表中选择的内容而变化。下拉列表中的所有选项都不会在生成的HTML中的任何位置提供。

<div class="t-dropdown-wrap t-state-default">
<span class="t-input">To be approved</span>

我的猜测是我必须执行javascript。不确定如何去做。

c# selenium telerik webdriver selenium-webdriver
1个回答
4
投票

你的问题有两个部分:

  1. 通常:在其他WebElements中选择WebElements
  2. 具体来说:读取下拉列表中的所有选项并选择其中一个

回答时,我假设您有一个名为“Driver”的WebDriver对象。

Selecting WebElements within other WebElements

首先,我不确定你为什么提到SelectElement - 我相信你想要的方法是FindElement()。 你可以从任何SearchContext调用FindElement()。 WebDriver对象是一个SearchContext,因此您可以(理论上)通过调用Driver.FindElement()在页面的任何位置找到WebElement。 WebElement本身也是一个SearchContext,因此您也可以从已经找到的WebElement中调用.FindElement()。这对于将搜索范围从整个页面缩小到特定元素内非常有用。

Reading All Options in the Dropdown and Selecting One of Them

我查了一个Telerik Dropdown的例子,看看你可能正在处理什么。我发现了一个here

首先,您需要通过单击向下箭头图标打开下拉列表。似乎图标编码如下:

<span class="rddlIcon"></span>

如果页面上只有其中一个,您可以找到它并单击它:

Driver.FindElement(By.ClassName("rddlIcon")).Click();

似乎Dropdown代码如下所示:

<ul class="rddlList">
   <li class="rddlItem">Item One</li>
   <li class="rddlItem">Item Two</li>
   <li class="rddlItem">Item Three</li>
</ul>

你想在这里做的是选择<ul> WebElement,然后从那里找到你想要的列表项。

WebElement List = Driver.FindElement(By.ClassName("rddlList"));
//Get Item Three
WebElement Item = List.FindElement(By.XPath("//li[text()='Item Three']");
Item.click();
© www.soinside.com 2019 - 2024. All rights reserved.