18

我无法在下拉列表中选择选项。我想我需要有.Selector SelectElement,但没有这样的选择。

示例代码:

IWebDriver ffbrowser = new FirefoxDriver();
ffbrowser.Navigate().GoToUrl("http://www.amazon.com/");
ffbrowser.Manage().Window.Maximize();

Thread.Sleep(500);

IWebElement ddl = ffbrowser.FindElement(By.Name("url"));
int numofitems = ddl.FindElements(By.TagName("option")).Count;

for (int i = 1; i < numofitems; i++)
{
    ffbrowser.select("TagName = option", "index = i");
}

“ffbrowser.select”中的“select”报错:

错误 1 ​​'OpenQA.Selenium.IWebDriver' 不包含 'select' 的定义,并且找不到接受类型为 'OpenQA.Selenium.IWebDriver' 的第一个参数的扩展方法 'select'(您是否缺少 using 指令或装配参考?)

我的项目参考包括Selenium.WebDriverBackedSelenium, Thoughtworks.Selenium.Core, WebDriver,WebDriver.Support

我有

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
4

5 回答 5

27

根据您使用的 Selenium WebDriver 版本,您可以使用SelectElement该类,该类将包含在OpenQA.Selenium.Support.UI.
例如:

SelectElement selector = new SelectElement(element);
selector.SelectByIndex(1);

元素是您的下拉框。

于 2013-03-20T22:01:51.627 回答
1

这是一个示例,可以更好地说明如何获取下拉列表中的所有项目并从下拉列表中选择项目。

下拉列表的示例 Html 代码

<select>
  <option>Milk</option>
  <option>Coffee</option>
  <option>Tea</option>
</select>

下面的代码从上面的下拉列表中获取所有项目并选择项目'Coffee'。代码逻辑如下

Step 1. 创建 web element 标签的接口 Step 2. 创建一个包含 web element tag 的所有子元素的 IList Step 3. 选择 Drop List 项“Coffee”

using System;
using System.Collections.Generic;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;

namespace SeleniumTests
{
    class DropDownListSelection
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new FirefoxDriver(); 
            driver.Navigate().GoToUrl("http://DropDownList.html");
            IWebElement element = driver.FindElement(By.XPath("//Select"));
            IList<IWebElement> AllDropDownList =    element.FindElements(By.XPath("//option"));
            int DpListCount = AllDropDownList.Count;
            for (int i = 0; i < DpListCount; i++)
            {
                if (AllDropDownList[i].Text == "Coffee")
                 {
                    AllDropDownList[i].Click();
                 }
            }
            Console.WriteLine(DpListCount);
            Console.ReadLine();
        }
    }
}
于 2013-03-21T10:02:09.777 回答
1

您还可以使用:

new SelectElement(driver.FindElement(By.Id("")).SelectByText(""));

或者:

new SelectElement(driver.FindElement(By.Id("")).SelectByValue(""));
于 2015-05-04T08:53:58.587 回答
0

使用下面的简单示例代码:

String Input="Value to Select"; 
String xPathVal="@["id=Samplexpath"]"; 
IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal)); 
SelectElement dropdown = new SelectElement(TargetElement); 
dropdown.SelectByText(Input.Trim());
于 2015-10-27T18:45:50.617 回答
0

这完美地工作......

SelectElement selector = new SelectElement(element);
selector.SelectByIndex(1);

元素是您的下拉框。

于 2017-06-22T14:30:43.117 回答