c# - 如何使用 selenium/C# 在下拉菜单上移动光标
问题描述
有一个包含五个选项的下拉列表的字段。单击该字段将显示下拉列表。需要将光标移动到第三个字段,然后单击它。例子。该字段称为产品名称,下拉菜单依次为“选择选项”、“苹果”、“香蕉”、“葡萄”、“芒果”和“菠萝”。“选择选项”是默认的,需要通过移动光标来选择葡萄。需要点击并打开下拉菜单,将光标移动到葡萄(高亮它)并点击它。下面的代码没有将光标移动到正确的位置(视觉上应该看到)然后抛出异常:“ElementNotInteractableException”。关于如何做到这一点以及为什么抛出异常的任何想法?在菜单图片中。如下图所示,是否可以通过说 JavaScriptExecutor 或其他方式来完成?
ProductName.Click();
var opt = DriverContext.Driver.FindElement(By.XPath("//option[text()='Grape']"));
Actions mouse = new(DriverContext.Driver);
mouse.MoveToElement(opt);
mouse.Click();
mouse.Perform();
解决方案
Selenium 提供了一个与下拉/选择元素交互的包。请参阅:https ://www.selenium.dev/documentation/support_packages/working_with_select_elements/
比鼠标操作更好,还提供了读取选定元素的选项。例子:
using OpenQA.Selenium.Support.UI;
IWebElement selectElement =
driver.FindElement(By.XPath("//<path to dropdown>"));
var selectObject = new SelectElement(selectElement);
selectObject.SelectByText("Bread")
请注意,您需要找到选择元素,而不是其中的选项。
推荐阅读
- python - 如何重命名将使用以下程序下载的 .wav 文件?
- java - 在 MacOSX 上安装 `rJava` 失败并显示“JDK 不完整!...”
- sql-server - 探索存储过程并添加更多参数
- spring-roo - 在 STS 4.6.1 中安装 Spring Roo 时出现问题
- php - 使用 php 中的 PDO 查询在响应为空时跳过 foreach 循环
- datagridview - 使用 trim() 值更新 Datagridview 值
- r - R中的合并排序连接
- python - Python: Pandas Groupby then fail rate
- node.js - Passport.js - Exchange authorization code received from the client for the access token
- django - Django updateView 总是更新数据库中的第一个元素