C# 如何使用Selenium中的Telerik下拉菜单?

C# 如何使用Selenium中的Telerik下拉菜单?,c#,selenium,telerik,webdriver,selenium-webdriver,C#,Selenium,Telerik,Webdriver,Selenium Webdriver,我刚刚开始使用SeleniumWebDriver。 但我被Telerik的下拉列表困住了 我无法使用SelectElement,因为下拉列表显示在span元素中。 如何读取下拉列表中的所有可用选项,然后进行选择 添加更多信息: 下拉列表由JSON/JQuery填充。下面是HTML示例。跨度元素之间的文字根据您从下拉列表中选择的内容而变化。下拉列表中的所有选项在生成的HTML中的任何位置都不可用 <div class="t-dropdown-wrap t-state-default">

我刚刚开始使用SeleniumWebDriver。 但我被Telerik的下拉列表困住了

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

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

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

我猜我必须执行javascript。不确定该怎么做。

你的问题有两部分:

通常:在其他WebElement中选择WebElement 特别是:读取下拉列表中的所有选项并选择其中一个 在回答时,我假设您有一个名为Driver的WebDriver对象

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

读取下拉列表中的所有选项并选择其中一个 我查了一个Telerik下拉列表的示例,看看您可能在处理什么。我找到了一个

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

<span class="rddlIcon"></span>
Driver.FindElement(By.ClassName("rddlIcon")).Click();
<ul class="rddlList">
   <li class="rddlItem">Item One</li>
   <li class="rddlItem">Item Two</li>
   <li class="rddlItem">Item Three</li>
</ul>
似乎下拉代码如下所示:

<span class="rddlIcon"></span>
Driver.FindElement(By.ClassName("rddlIcon")).Click();
<ul class="rddlList">
   <li class="rddlItem">Item One</li>
   <li class="rddlItem">Item Two</li>
   <li class="rddlItem">Item Three</li>
</ul>

你的问题分为两部分:

通常:在其他WebElement中选择WebElement 特别是:读取下拉列表中的所有选项并选择其中一个 在回答时,我假设您有一个名为Driver的WebDriver对象

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

读取下拉列表中的所有选项并选择其中一个 我查了一个Telerik下拉列表的示例,看看您可能在处理什么。我找到了一个

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

<span class="rddlIcon"></span>
Driver.FindElement(By.ClassName("rddlIcon")).Click();
<ul class="rddlList">
   <li class="rddlItem">Item One</li>
   <li class="rddlItem">Item Two</li>
   <li class="rddlItem">Item Three</li>
</ul>
似乎下拉代码如下所示:

<span class="rddlIcon"></span>
Driver.FindElement(By.ClassName("rddlIcon")).Click();
<ul class="rddlList">
   <li class="rddlItem">Item One</li>
   <li class="rddlItem">Item Two</li>
   <li class="rddlItem">Item Three</li>
</ul>

我们需要看一个例子,看看它是如何生成HTML标记的,这样才有可能对您有所帮助。将HTML放在select周围,这样我们就可以帮助您响应更多信息:下拉列表由JSON/JQuery填充-当您单击下拉箭头时会发生这种情况吗?如果是这样,那么我的答案应该仍然有效,因为在您使用WebDriver单击下拉列表后,列表将被填充,这意味着它的内容被添加到HTML中,从而允许WebDriver选择一个选项。因此无需使用Selenium直接执行JavaScript。我们需要看一个例子,说明生成的HTML标记是什么样子的,这样才有可能对您有所帮助。将HTML放在select周围,这样我们就可以帮助您响应更多信息:下拉列表由JSON/JQuery填充-当您单击时会发生这种情况吗下拉箭头?如果是这样,那么我的答案应该仍然有效,因为在您使用WebDriver单击下拉列表后,列表将被填充,这意味着它的内容被添加到HTML中,从而允许WebDriver选择一个选项。因此,无需使用Selenium直接执行JavaScript。