2

我刚刚开始使用 Selenium Webdriver。但我坚持使用 Telerik 下拉菜单。

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

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

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

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

4

1 回答 1

4

你的问题有两个部分:

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

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

在其他 WebElement 中选择 WebElement

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

阅读下拉列表中的所有选项并选择其中一个

我查找了 Telerik Dropdown 的示例,以了解您可能正在处理的内容。我在这里找到了一个。

首先,您需要通过单击向下箭头图标打开下拉菜单。图标似乎是这样编码的:

<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();
于 2013-11-04T17:58:18.710 回答