【问题标题】:The type or namespace SelectElement could not be found in selenium c#在 selenium c# 中找不到类型或命名空间 SelectElement
【发布时间】:2021-11-28 01:04:22
【问题描述】:
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

有人知道怎么解决吗?

【问题讨论】:

  • 欢迎来到 SO。最好在问题中包含错误文本而不是图像。您还需要包含代码的相关部分。见stackoverflow.com/help/mcve
  • Kevin 避免发布图片链接,并以正确的格式分享您的问题代码。你可以参考这个链接how to ask a question
  • 如果您使用的是 Visual Studio,请尝试右键单击 SelectElement,然后 resolve namespace 单击正确的命名空间,以便将其添加到文件顶部
  • @Rafalon 它没有在那里显示任何命名空间。右键单击时仅显示这三个(在新文件中生成类SelectElement,生成类SelectElement和生成嵌套类SelectElement)
  • @Kevin 在代码顶部显示“使用”导入行。问题可能就在那里

标签: c# selenium selenium-webdriver nunit nunittestadapter


【解决方案1】:

您需要确保引用 NuGet 包 Selenium.Support

我遇到了同样的问题,然后意识到我只是引用了Selenium.WebDriver NuGet 包。添加 Selenium.Support NuGet 包并添加正确的 using 语句后。我的 SelectElement 代码已成功编译。

正确的 using 语句

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

【讨论】:

  • 这是解决 OP 关于为什么无法识别 SelectElement 的问题的答案。
  • 这对我有用,接受的答案(DebanjanB's)没有。
【解决方案2】:

如果您正在使用 nunittestadapterNUnit.Framework 等框架,请参考之前的几篇文章, VS 2017 使用 NuGet 管理器有时安装/配置可能会出现问题。

SelectElement 类

根据文档,SelectElement 类在 OpenQA.Selenium.Support.UI Namespace 中几乎可用,它提供了一种方便的方法来操作 HTML 选择元素中的选项选择。


继承层次结构

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

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


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


语法:公共类 SelectElement : IWrapsElement


快照:

解决方案

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

参考

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

【讨论】:

  • 是的,你的答案是正确的!我重新安装了 webdriver 支持,它现在可以工作了!谢谢
【解决方案3】:

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

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

下拉项的选择有3种方式:byText、byIndex、byValue

1.byText()

oSelect.SelectByText("Alex");

2.byIndex()

SelectAnEducation.SelectByIndex(0);

3.byValue()

SelectAnEducation.SelectByValue("Alex");

希望这会有所帮助,

【讨论】:

    【解决方案4】:

    由于使用的是预发布版本,我遇到了同样的问题。 v4.00 阿尔法。我安装了以前的版本v3.141.0,错误已解决

    【讨论】:

    • 我做了同样的事情,但它不适用于最新版本的 chromedriver。它反而给了我“无法加载类型'OpenQA.Selenium.Internal.IWrapsElement'”
    • 在使用 SelectElement 的所有文档和教程都过时之前,安装最新版本非常有趣。非常感激!正是我的想法!
    【解决方案5】:

    首先,您需要从 NuGet 安装正确的包,即 Selenium.Support

    正确的using语句如下:

    使用 OpenQA.Selenium.Support.UI;

    【讨论】:

      【解决方案6】:

      从 Selenium.WebDriver 4.0 开始,需要同时安装 Selenium.WebDriver 和 Selenium.Support nuget 包(相同版本)以避免此问题(IWrapsElement / 类型加载异常)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-25
        • 2011-06-28
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多