Selenium:Firefox 驱动程序,在 c# 中使用 SelectElement 从下拉列表中选择一个项目无法正常工作

2024-03-26

我正在尝试执行一项简单的任务,尝试使用显示的文本在下拉列表中选择一个值。场景如下。

我的 HTML 看起来像。

<div id="TestContainer" class="col-md-4">
    <select onchange="Test()">
        <option>Test1</option>
        <option>Test2</option>
        <option>Test3</option>
        <option>Test4</option>
    </select>
</div>

通过使用 selenium,我想使用下拉列表中的第二项,即 test2。 我为同样的内容编写的 C# 代码是。

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
string localURL = "http://localhost:82/";

using (IWebDriver driver = new FirefoxDriver(service))

  {
         driver.Navigate().GoToUrl(localURL);
         var div = driver.FindElement(By.Id("TestContainer"));
         div.Click();
         IWebElement dropDownListBox = div.FindElement(By.TagName("select"));
         SelectElement demoSelect = new SelectElement(dropDownListBox);
         demoSelect.SelectByText("Test2");
         driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2));

   }

除了上述内容之外,我什至尝试一一迭代选项并选择如下所示的适当项目也无济于事。

if (option.Text.Equals("Test2"))
{
    option.Click();
           driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2));
    break;
 }

在上述两种情况下,代码不会中断,也不会引发异常,但不会选择该值,并且似乎没有发生任何事情。

我使用的硒版本如下。

<package id="Selenium.Support" version="2.53.1" targetFramework="net452" />
<package id="Selenium.WebDriver" version="2.53.1" targetFramework="net452" />
<package id="WebDriver.GeckoDriver"version="0.9.0"targetFramework="net452" />

我也使用最新版本的 Firefox (48.0)

以前有人遇到过这个问题吗?如果您能为我指明正确的方向,那就太好了。


如果你已经尝试了所有的方法SelectElement选择一个option但没有成功,这是尝试使用的另一种解决方案IJavascriptExecutor如下 :-

 IWebElement dropDownListBox = driver.FindElement(By.cssSelector("#TestContainer select"));
((IJavaScriptExecutor)driver).ExecuteScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", dropDownListBox, "Test2");

完整代码:

using (IWebDriver driver = new FirefoxDriver(service))  
  {
      driver.Navigate().GoToUrl(localURL);
      IWebElement dropDownListBox = driver.FindElement(By.cssSelector("#TestContainer select"));
      ((IJavaScriptExecutor)driver).ExecuteScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", dropDownListBox, "Test2");

   }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium:Firefox 驱动程序,在 c# 中使用 SelectElement 从下拉列表中选择一个项目无法正常工作 的相关文章

  • c++03 初始化具有多个参数的对象数组

    这可能是一个简单的问题 但我正在尝试使用参数化构造函数初始化对象数组 例如 class A public int b c d A int i int j void A A int i int j d rand b 2 i c 3 j voi
  • C# 中集合作为装饰器

    在设计集合基础设施时 我们遇到了一个非常 明显 的问题 假设您需要实现许多 子 类型的集合 其中一个方面是存储相关 list array等等 而另一个是行为相关 ordered 仅删除 可观察到的 每次更改时都会触发一个事件 等 显然 再次
  • Python 的局限性是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我花了几天时间阅读有关 C 和 Python 的内容 发现 Python 非常简单且易于学习 所以我想知道它真的值得花时间学习吗 或者我应该花时
  • 以编程方式最大化屏幕一半的窗口

    我想最大化屏幕左侧的随机窗口 我可以在我的代码中使用 Windows Aero 函数吗 这个窗口can像用鼠标一样最大化 我只想以编程方式做到这一点 I use C 我可以得到IntPtr窗户的 如果可能的话 不要伪造鼠标或键盘输入 这可以
  • jni.h:没有这样的文件或目录

    我一直在关注本教程 http www java tips org other api tips jni simple example of using the java native interface html 在第 5 步 我从 GCC
  • 在 MVC 5 中,如何在单个 Ajax POST 请求中发送 ViewModel 和文件?

    我有一个 ASP NET MVC 5 应用程序 我正在尝试发送带有模型数据的 POST 请求 并且还包括用户选择的文件 这是我的 ViewModel 为了清晰起见进行了简化 public class Model public string
  • 正则表达式,获取两个关键字之间的整个字符串

    我正在做一些输出解析 我需要从两个单词之间抓取一大块文本 例如 如果我正在解析文本 Hi this is an example 我希望能够指定我的两个单词是 Hi 和 example 然后我将取回字符串 this is an 我知道正则表达
  • 从该共享库中查找加载的共享库的位置?

    从共享库中的函数 在正在运行的进程 用 C 编写 内 我如何发现该共享库是从哪里加载的 我找到的所有答案都涉及使用诸如ldd在命令行中 或者通过查看 proc self maps 在 Win32 上 我只需使用GetModuleFileNa
  • EF Core:同时使用ID作为主键和外键

    我有两个实体 Prospect and Person 我想做的是使用Prospect ID作为主键Prospect表并作为外键PersonID 我的想法是对两个实体使用相同的 ID 而不需要PersonID on my Prospect实体
  • 如何使用 C# 从数据库中检索多个图像

    我有一个包含9张图像的数据库 这些图像不断变化 所以我无法直接设置src在 HTML 中 img 标签来显示 9 个图像 我必须从数据库中选择它们并相应地绑定它们 我可以使用以下命令检索并打印 1 张图像Response BinaryWri
  • 未初始化的枚举变量值

    我使用 enum 声明新类型 DAY 然后从中声明两个变量 day1 和 day2 然后当我使用未初始化的值时 我应该看到 0 到 6 之间的值 因为 enumlist 中的值介于 0 到 6 之间 但我收到了这些值改为 858993460
  • 我们如何找到 C# 整数数组中的项目计数?

    我需要在 C 数组中查找类型为整数的项目计数 我的意思是 int intArray new int 10 int 0 34 int 1 65 int 2 98 intArray 的项目计数为 3 我在下面找到了 strArray 的代码 但
  • INotifyPropertyChanged 与线程

    我有一个 BindingList
  • 使用 istream_iterator 范围构造时无法访问向量

    我尝试编译此代码片段 但出现编译器错误 使用 Visual Studio 2010 进行编译 include
  • 推导具有两个以上参数的 std::function

    我想知道为什么std function http en cppreference com w cpp utility functional function只知道有两个参数的函数 我已经编写了一些运行良好的代码 但存在许多限制 欢迎任何反馈
  • C++ 抛硬币程序错误

    我正在尝试计算抛硬币中连续的正面朝上的次数 不幸的是 我的连续头计数器没有正确增加 有任何想法吗 代码和示例输出如下 include
  • 如何从函数调用事件处理程序?

    我有一个类 我从中调用一个函数ABC string st 带字符串参数 该函数定义在一个Form class Form1 我有一个列表视图 想要从函数中自动调用列表视图 mouse click 事件 我该如何做到这一点 您不能调用另一个类的
  • 有条件地使用按位运算符

    条件运算符如何使用按位运算符表示 这是一个家庭作业问题 我必须仅使用按位运算来实现条件运算符 那就很简单了 如果if允许使用语句 但它必须是严格的按位运算符 仅运营商 gt gt and lt lt 可以使用 不if可以使用语句或循环 该函
  • Eigen 如何沿特定维度连接矩阵?

    我有两个特征矩阵 我想将它们连接起来 就像在 matlab 中一样cat 0 A B eigen 有等价物吗 Thanks 您可以使用逗号初始值设定项语法 水平方向 MatrixXd C A rows A cols B cols C lt
  • EF,Code First - 如何在插入时设置自定义 Guid 标识值

    在处理在数据库中插入新实体时 我面临以下问题Guid作为主键 代码优先的 EF 5方法 我知道有很多类似的主题 因为我为此问题运行了几个小时 但我找不到与此问题相关的主题 举个例子 我的 POCO 类是 public class Entit

随机推荐

  • 在 Swift 3 中使用 -observeValueForKeyPath:ofObject:change:context:

    我正在尝试将 Swift 2 2 项目转换为 Swift 3 但收到以下错误 Method observeValue forKeyPath ofObject change context with Objective C selector
  • 将人类友好的日期转换为毫秒[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何将人类友好的日期转换为自 UNI
  • 如何在 Linux 中获取“文件创建时间”

    我需要找出在 Linux 中使用 C 创建文件的时间和日期 如何获取文件的最后修改日期 http www jb man ac uk slowe cpp lastmod html struct stat attrib 1 create a f
  • 在特定时间过后自动更改 WooCommerce 订单状态?

    有没有办法让 WooCommerce 在经过这么长时间后自动将自定义订单状态更改为不同的自定义订单状态 基本上 我希望所有订单状态更改为 退款已提交 的订单在 30 天后自动更改为 退款已过期 我意识到这些不是正常的 WooCommerce
  • Google OAuth 访问令牌

    我对 OAuth 和 Google 感到很困惑 我花了很长时间才获得刷新令牌来创建新的访问令牌 然后发现refresh token也过期了 这有什么意义啊 我需要做的就是保留一个有效的 access token 以供使用legato htt
  • 如何在 WebView 中加载 HTML 页面时显示进度对话框

    我正在使用 Web 视图来显示 html 页面 并且我想在页面加载之前显示一个进度对话框 完成后 对话框必须消失 我为此使用了 AsyncTask 但对话框不显示 请参阅下面的我的代码 class DownloadAysnc extends
  • 异步调用完成后渲染 React 函数组件的一部分

    我将 Material ui 与 React 函数组件一起使用 并使用其自动完成组件 我自定义了它 每当我更改输入字段中的文本时 我希望该组件呈现新的搜索结果 callAPI xyz 我在操作中调用 API 并使用 xyz 参数 从该函数组
  • 不同的构建操作在 csproj 中有何作用? IE。附加文件或假货

    不同的构建操作在 Web API 项目中起什么作用 也可能适用于其他类型 我看到 无 编译 内容 嵌入式资源 AdditionalFiles CodeAnalysisDictionary ApplicationDefinition 页面 资
  • Windows 10 上的 npx 和 nvm 导致需要安装以下软件包

    我已经安装了用于 Windows 的 nvm https github com coreybutler nvm windows和 nvm 列表显示 17 2 0 16 13 1 Currently using 64 bit executab
  • 如何在 SwiftUI 中使用 DatePicker 创建提醒

    我要显示DatePicker在警报视图或操作表视图中 但我找不到任何资源来执行此操作 我想要以下视图 谢谢您的帮助 你想要的实际上是被苹果劝阻的 根据这个答案 https stackoverflow com a 26342100 86977
  • 图标不是 3.00 格式

    在 Visual Studio 2008 中构建 C 应用程序时 我收到以下错误 iconfile ico 不是 3 00 格式 我使用 Paint 创建了图标文件 并将其保存为 ico 文件 我尝试将其保存为 16 位 24 位和 256
  • 仅匹配括号内字符的模式

    我在这里查看了很多关于 SO 的帖子 其中包含有关 REGEX 模式的建议 以从括号中获取文本 但是 根据我的研究 我找不到有效的解决方案 例如 我查看了以下内容 R 正则表达式提取包含关键字的括号之间的文本 https stackover
  • PHP性能考虑?

    我正在建造一个PHP网站 但目前唯一PHP我在某些页面上使用的是六个左右的包含内容 我最终可能会使用一些数据库查询 很简单include 声明关注速度或扩展 而不是静态HTML 什么样的事情容易导致网站陷入困境 当然 include 比静态
  • Activity 方法:onCreate() 和 onDestroy()

    当第一次创建活动时 系统会调用OnContentChanged 方法作为系统的第一个方法和最后一个调用是OnDetachedFromWindow 方法当一个 Activity 被杀死时 但 android 文档说 Activity 的整个生
  • 如何使用PageDown Markdown编辑器?

    我想为用户提供实时预览使用 Markdown 创建的笔记的能力 但是我在该项目中找不到任何下载 我怎样才能开始使用PageDown 降价 https github com balpha pagedown编辑 PageDown 的文档非常混乱
  • 使用 pyExcelerator/xlrd 进行数据透视

    如何使用 pyExcelerator xlrd 等 Python 库创建带有数据透视表的工作表 在 Excel 工作簿中 我需要生成一份每日报告 其中有一个数据透视表来汇总其他工作表上的数据 一种选择是使用一个空白模板 我可以复制该模板并用
  • TFS 分支和合并策略

    我在 TFS 中有一个团队项目 每天都会提交任务 我想独立完成每个任务 然后在测试后将其合并到主线中 目前有一个 MAIN 分支和一个 DEV 分支 它是 MAIN 的子分支 更改在 DEV 分支中进行 然后在准备就绪时合并到 MAIN 中
  • 什么时候应该尝试消除 switch 语句? [复制]

    这个问题在这里已经有答案了 我在我正在处理的代码库中遇到了一个 switch 语句 我正在尝试找出如何用更好的东西替换它switch 语句被认为是代码味道 http c2 com cgi wiki SwitchStatementsSmell
  • React 处理表单提交

    我正在尝试在 React Redux 中创建一个表单 现在我只希望表单在提交表单时触发我的函数handleSubmit 然而目前看来该功能是在页面加载时立即触发的 export default class AssetsAdd extends
  • Selenium:Firefox 驱动程序,在 c# 中使用 SelectElement 从下拉列表中选择一个项目无法正常工作

    我正在尝试执行一项简单的任务 尝试使用显示的文本在下拉列表中选择一个值 场景如下 我的 HTML 看起来像 div class col md 4 div