首页 > 解决方案 > 如何使用 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();

在此处输入图像描述

在此处输入图像描述

标签: c#seleniumdrop-down-menuselenium-chromedriver

解决方案


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")

请注意,您需要找到选择元素,而不是其中的选项。


推荐阅读