我正在尝试为我的网络测试选择一个选项。 一个例子可以在这里找到: http : //www.tizag.com/phpT/examples/formex.php

除了选择选项部分外,一切都很好。 如何按值或按标签选择选项?

我的代码:

using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
using System.Collections.ObjectModel;
using System.Text.RegularExpressions;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;

class GoogleSuggest
{
    static void Main()
    {
        IWebDriver driver = new FirefoxDriver();

        //Notice navigation is slightly different than the Java version
        //This is because 'get' is a keyword in C#
        driver.Navigate().GoToUrl("http://www.tizag.com/phpT/examples/formex.php");
        IWebElement query = driver.FindElement(By.Name("Fname"));
        query.SendKeys("John");
        driver.FindElement(By.Name("Lname")).SendKeys("Doe");
        driver.FindElement(By.XPath("//input[@name='gender' and @value='Male']")).Click();
        driver.FindElement(By.XPath("//input[@name='food[]' and @value='Chicken']")).Click();
        driver.FindElement(By.Name("quote")).Clear();
        driver.FindElement(By.Name("quote")).SendKeys("Be Present!");
        driver.FindElement(By.Name("education")).SendKeys(Keys.Down + Keys.Enter); // working but that's not what i was looking for
        // driver.FindElement(By.XPath("//option[@value='HighSchool']")).Click(); not working
        //  driver.FindElement(By.XPath("/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr/td/div[5]/form/select/option[2]")).Click(); not working
        // driver.FindElement(By.XPath("id('examp')/x:form/x:select[1]/x:option[2]")).Click(); not working

        }
}

#1楼 票数:196 已采纳

您必须从下拉列表中创建一个选择元素对象。

 using OpenQA.Selenium.Support.UI;

 // select the drop down list
 var education = driver.FindElement(By.Name("education"));
 //create select element object 
 var selectElement = new SelectElement(education);

 //select by value
 selectElement.SelectByValue("Jr.High"); 
 // select by text
 selectElement.SelectByText("HighSchool");

更多信息在这里

#2楼 票数:13

对此补充一点 - 我遇到了一个问题,即在将 Selenium.NET 绑定安装到 C# 项目后 OpenQA.Selenium.Support.UI 命名空间不可用。 后来发现我们可以通过运行以下命令轻松安装最新版本的 Selenium WebDriver Support Classes:

Install-Package Selenium.Support

在 NuGet 包管理器控制台中,或从 NuGet 管理器安装 Selenium.Support。

#3楼 票数:10

另一种方式可能是这个:

driver.FindElement(By.XPath(".//*[@id='examp']/form/select[1]/option[3]")).Click();

并且您可以更改 option[x] 中的索引,将 x 更改为您要选择的元素数量。

我不知道这是否是最好的方法,但我希望对您有所帮助。

#4楼 票数:3

通过文本选择一个选项;

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

通过值选择选项:

 (new SelectElement(driver.FindElement(By.XPath(""))).SelectByValue("");

#5楼 票数:3

用于从下拉列表中选择项目的 Selenium WebDriver C# 代码:

IWebElement EducationDropDownElement = driver.FindElement(By.Name("education"));
SelectElement SelectAnEducation = new SelectElement(EducationDropDownElement);

有 3 种方法可以选择下拉项: i) 按文本选择 ii) 按索引选择 iii) 按值选择

按文字选择:

SelectAnEducation.SelectByText("College");//There are 3 items - Jr.High, HighSchool, College

按索引选择:

SelectAnEducation.SelectByIndex(2);//Index starts from 0. so, 0 = Jr.High 1 = HighSchool 2 = College

按值选择:

SelectAnEducation.SelectByValue("College");//There are 3 values - Jr.High, HighSchool, College

#6楼 票数:2

您只需要传递值并输入密钥:

driver.FindElement(By.Name("education")).SendKeys("Jr.High"+Keys.Enter);

#7楼 票数:1

这就是我的工作方式(按 ID 选择控制,按文本选择选项):

protected void clickOptionInList(string listControlId, string optionText)
{
     driver.FindElement(By.XPath("//select[@id='"+ listControlId + "']/option[contains(.,'"+ optionText +"')]")).Click();
}

用:

clickOptionInList("ctl00_ContentPlaceHolder_lbxAllRoles", "Tester");

#8楼 票数:0

如果您只是从下拉框中寻找任何选择,我还发现“按索引选择”方法非常有用。

if (IsElementPresent(By.XPath("//select[@id='Q43_0']")))
{
    new SelectElement(driver.FindElement(By.Id("Q43_0")))**.SelectByIndex(1);** // This is selecting first value of the drop-down list
    WaitForAjax();
    Thread.Sleep(3000);
}
else
{
     Console.WriteLine("Your comment here);
}

#9楼 票数:0

 var select = new SelectElement(elementX);
 select.MoveToElement(elementX).Build().Perform();

  var click = (
       from sel in select
       let value = "College"
       select value
       );

#10楼 票数:0

IWebElement element = _browserInstance.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 == "nnnnnnnnnnn")
    {
        AllDropDownList[i].Click();
        _browserInstance.ScreenCapture("nnnnnnnnnnnnnnnnnnnnnn");
    }
}

  ask by mirza translate from so

未解决问题?本站智能推荐:

4回复

使用Selenium WebDriver C#从下拉列表中选择一个值[重复]

这个问题在这里已有答案: 如何使用Selenium WebDriver C#从下拉列表中选择一个选项? 10个答案 我正在艰难地使用WebDriver的C#绑定从下拉列表中选择值。 我过去既没有使用C#也没有使用WebDriver。 我正在使用WebDrive
1回复

如果下拉菜单不是选择元素,如何将Webdriver与C#一起使用,如何通过文本选择下拉项?

我有以下代码块: 我想做的是通过文本(或值)选择菜单项“汽车”和“摩托车”。 我可以通过xpath或ID轻松获得它们,但麻烦的是它们的ID经常更改,并且新项目已添加到列表中,因此也破坏了我的xpath。 我尝试使用“选择”,但是此下拉菜单不是传统意义上的选择菜单。 任何帮助
2回复

使用c#的webdriver-如何在选项下拉菜单中进行迭代?

我有以下下拉菜单/列表。 我想做的是能够遍历每个下拉项,单击它,然后确认它已被选中。 下面我提供了下拉列表中仅3个项目的示例代码 一如既往的任何帮助/指针将不胜感激 谢谢 ***************编辑*******************************
1回复

如何在Selenium Webdriver C#中单击突出显示的选项?

我正在使用select2元素。 我通过单击箭头打开选项栏,然后输入文本以将选项过滤为仅一个,然后我不知道如何单击该选项,因此可以选择它,有什么想法吗?
1回复

在C#中使用Selenium WebDriver下载文件时如何处理保留和丢弃选项按钮

我想尝试在C#中使用Selenium或应用程序Web驱动程序单击“保持”按钮。
1回复

如何使用Selenium Webdriver C#从条形图中提取值

我的目标是使用Selenium验证此条形图中的值。 我无法使用Selenium查找图表值。 不知道我应该使用XPath还是CssSelector。 图表中有三个条形,分别是“经常”,“有时”和“从不”。 当前图表中的值如下: 常:2 有时:1 很少:0 我
1回复

如何使用硒从禁用下拉列表中获取数据?

禁用下拉菜单的示例图像: 尝试过:
8回复

在 C# 中使用 Selenium WebDriver 执行 JavaScript

这是如何实现的? 这里说java版本是: 但是我找不到执行此操作的 C# 代码。