【问题标题】:C# Selenium - dropdown menu/ comboboxC# Selenium - 下拉菜单/组合框
【发布时间】:2018-02-09 14:34:58
【问题描述】:

我在从自定义下拉菜单中选择时遇到问题。我已尝试使用 XPath、CssSelector 和 Id。

我在这里添加了代码链接:

Picture of the code

我想我必须访问 div class="SelectBox" 才能访问 id='ctl00_ctl00_ctl00_MP_Blank_Body_MP_Base_Body_MP_TopSideMenu_Body_ctl00_cboBehandlingstype'

但我不断收到错误。

这是我目前正在尝试的,但没有任何运气:

IWebElement test = driver.FindElement(By.XPath("//div[@class='input']//div[@id='ctl00_ctl00_ctl00_MP_Blank_Body_MP_Base_Body_MP_TopSideMenu_Body_ctl00_cboBehandlingstype']"));

有人可以告诉我如何访问下拉列表中的项目吗?

谢谢! :)

【问题讨论】:

  • 发布您尝试使用的元素的 html。
  • 请阅读How to Ask,尤其是关于minimal reproducible example(MCVE)和How much research effort is expected?的部分,这将帮助您调试自己的程序并自己解决问题。如果您这样做并且仍然卡住,您可以返回并发布您的 MCVE、您尝试过的内容以及执行结果(包括任何错误消息),以便我们更好地帮助您。还提供指向页面和/或相关 HTML 的链接。
  • 请阅读为什么a screenshot of code is a bad idea。粘贴代码并正确格式化。

标签: c# html css selenium xpath


【解决方案1】:

试试这个

var select = driver.FindElementById("ctl00_ctl00_ctl00_MP_Blank_Body_MP_Base_Body_MP_TopSideMenu_Body_ctl00_cboBehandlingstype");

var stringValues = select.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);

((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; } }", select, stringValues[0]);

【讨论】:

  • 它没有给我任何错误,但它没有从列表中选择任何东西:)
【解决方案2】:

您需要使用“SelectElement”而不是“IWebElement”。

SelectElement mySelect = new SelectElement(yourDriver.FindElement(By.Id("ctl00_ctl00_ctl00_MP_Blank_Body_MP_Base_Body_MP_TopSideMenu_Body_ctl00_cboBehandlingstype")));

mySelect.SelectByText("510111 Normalbehandling");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多