在 Selenium C# 中找不到 SelectElement 类型或命名空间。

9
driver.FindElement(By.Id("inputUsername")).SendKeys("aca");
driver.FindElement(By.Id("inputPassword")).SendKeys("123");
driver.FindElement(By.TagName("button")).Click();

SelectElement oSelect = new SelectElement(driver.FindElement(By.Id("selectFilterbyUser")));
oSelect.selectByText("Alex");

有人能提供解决我上面附加的问题的方法吗?尝试使用SelectElement,但它显示:

The type or namespace `SelectElement` could not be found.

我尝试查看可能的修复选项,但仅显示三个选项,它们是:

  • 在新文件中生成类SelectElement
  • 生成类SelectElement
  • 生成嵌套类SelectElement

有人知道如何解决吗?


1
欢迎来到SO。最好将错误文本包含在问题中,而不是作为图像。您还需要包括代码的相关部分。请参阅https://stackoverflow.com/help/mcve。 - Nick
Kevin避免发布图像链接,并使用适当的格式在问题中分享您的代码。您可以参考此链接如何提问 - Ashok kumar Ganesan
如果您正在使用Visual Studio,请尝试右键单击SelectElement,然后选择“解析命名空间”,点击正确的命名空间,这样它就会添加到文件顶部。 - Rafalon
@Rafalon,它那里没有显示任何命名空间。只有右键单击时显示这三个选项(在新文件中生成类SelectElement、生成类SelectElement和生成嵌套类SelectElement)。 - Kevin
@BHOW的回答是唯一解决OP的答案。 - GilShalit
显示剩余4条评论
7个回答

13

请确保引用了NuGet包Selenium.Support

我曾遇到同样的问题,后来发现我只引用了Selenium.WebDriverNuGet包。添加了Selenium.Support NuGet包并添加正确的使用语句后,我的SelectElement代码成功编译。

正确的使用语句

using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;

这是解决OP关于为什么无法识别SelectElement的问题的答案。 - GilShalit
这对我有用,被接受的答案(DebanjanB的)没有。 - Mat

10

根据之前的几篇文章,如果你使用像nunittestadapterNUnit.FrameworkVS 2017 using the NuGet Manager这样的框架,有时会在安装/配置方面出现问题。

SelectElement类

根据文档,SelectElement类基本上可以在OpenQA.Selenium.Support.UI Namespace中找到,该命名空间提供了一种方便的方法来操作HTML选择元素中的选项。


继承层次结构

System.Object
    OpenQA.Selenium.Support.UI.SelectElement

命名空间:OpenQA.Selenium.Support.UI


程序集:WebDriver.Support (in WebDriver.Support.dll) 版本:3.1.0


语法:public class SelectElement: IWrapsElement


快照:

selectelement_class

解决方案

卸载并重新安装 Selenium.Webdriver 和 Selenium.Support 包,这肯定会解决问题。

参考文献

您可以在Cannot find WebDriverWait class in OpenQa Selenium 3.7中找到相关讨论。


1
是的,你的答案是正确的!我重新安装了WebDriver支持,现在它可以工作了!谢谢。 - Kevin

2

由于使用了预发布版本v4.00 alpha,我遇到了相同的问题。我安装了之前的版本v3.141.0,错误得以解决。

在此输入图片描述


我也做了同样的事情,但在最新版本的chromedriver中它并没有起作用。相反,它给了我“无法加载类型'OpenQA.Selenium.Internal.IWrapsElement'”。 - Erin B
安装最新版本时,一切都很有趣,直到所有与SelectElement相关的文档和教程都过时了。非常感谢!正是我对此的想法! - idchlife

2

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

IWebElement selectElement = driver.FindElement(By.Id("selectFilterbyUser"));
SelectElement oSelect = new SelectElement(selectElement);

有三种方法可以选择下拉项:按文本、按索引、按值。

1.按文本选择(byText())

oSelect.SelectByText("Alex");

2.byIndex()

SelectAnEducation.SelectByIndex(0);

3.byValue()

SelectAnEducation.SelectByValue("Alex");

希望这能帮到你,

0
在Dotnet 4.7中,SelectElement可以在Nuget Package的Selenium Support驱动程序下找到。

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0
首先,您需要从NuGet安装适当的软件包,即Selenium.Support。
正确的使用语句如下:
使用OpenQA.Selenium.Support.UI;

0
从Selenium.WebDriver 4.0开始,为了避免IWrapsElement / type load异常,需要安装Selenium.WebDriver和Selenium.Support nuget包(相同版本)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接