C# Selenium从下拉菜单中单击标题

C# Selenium从下拉菜单中单击标题,c#,selenium,C#,Selenium,我正在使用C#开发selenium应用程序。我在网页上有一个下拉菜单。我希望selenium在单击下拉菜单后单击确切的名称。我现在成功单击下拉菜单,可以查看该菜单上的标题或选项 我想要的是,我需要selenium根据用户首次打开应用程序时给出的内容单击标题。实际上,菜单按钮不可见,但当我将鼠标悬停在名称上时,它是可见的 我试过了 var menu = driver.FindElement(By.ClassName("ms-vb")); SelectElement sel = new Selec

我正在使用C#开发selenium应用程序。我在网页上有一个下拉菜单。我希望selenium在单击下拉菜单后单击确切的名称。我现在成功单击下拉菜单,可以查看该菜单上的标题或选项

我想要的是,我需要selenium根据用户首次打开应用程序时给出的内容单击标题。实际上,菜单按钮不可见,但当我将鼠标悬停在名称上时,它是可见的

我试过了

var menu = driver.FindElement(By.ClassName("ms-vb"));
SelectElement sel = new SelectElement(menu); 
sel.SelectByText(text);
其中text是用户输入的文本。运行应用程序时,它会抛出如下错误

“应选择元素,但该元素为img”

我该如何解决这个问题?我的任务因此被搁置

如有任何意见,我们将不胜感激

谢谢

HTML

我希望这是您需要的代码:


如果它不是普通元素,SelectElement类将无法工作

以下是我处理javascript下拉列表的方式:

    //Click on the dropdown
    driver.FindElement(By.ClassName("ms-vb")).Click();
    //Wait for the result list to appear
    wait.Until(x => x.FindElement(By.LinkText("Target link to click")));
    //Click on the result you want
    driver.FindElement(By.LinkText("Target link to click")).Click();
如果结果不是链接,则应使用xPath通过其文本对其进行定位。前

    driver.FindElement(By.XPath("//*[text()='Target text']")).Click();

希望有帮助。

我们需要查看页面的HTML以开始任何类型的诊断,还需要澄清您所说的“标题基于用户首次打开应用时给出的内容”->应用中的内容是什么?你的网站?@Arran:我的意思是,我有一个对话框,专门要求用户输入标题。我需要检查网页中是否有用户输入标题的条目。关于html,您的意思是给您提供下拉按钮的html代码以及它周围的内容吗?这样我们就可以确切地看到它在DOM中的位置。@Arran:请找到我编辑的html答案。希望您只需要这个。
SelectElement
需要一个
select
元素,用于表示HTML中的下拉列表。您的
FindElement(By.ClassName(“ms vb”)
给它一个
img
,因此我建议您查看整个页面,并确保没有其他元素具有类
ms vb
…要执行此操作,只需运行
driver.FindElements(By.ClassName(“ms vb”)
…返回多少?