【问题标题】:Selecting Options from a Drop Down Menu in C# using Selenium使用 Selenium 从 C# 中的下拉菜单中选择选项
【发布时间】:2015-08-23 12:02:03
【问题描述】:

我正在尝试在下拉菜单中选择特定选项。我当前的代码突出显示了我想要的选择,但继续前进并且在“选择”它之后不会将值保留在字段中。我想抓住价值“医疗”。目前我正在使用:

IWebElement element = driver.FindElement(By.Name("DISPLAY_CoverageType"));
SelectElement selector = new SelectElement(element);
selector.SelectByText("Medical");

我从中提取的列表如下所示:

<option value="">Please Select One</option>
<option value="Medical">Medical</option>
<option value="Hospital">Hospital</option>
<option value="Dental">Dental</option>
<option value="Vision">Vision</option>

这会以蓝色突出显示我的选择,但不会在下拉菜单关闭时保持选中状态。有什么建议吗?

【问题讨论】:

  • 只是一个疯狂的猜测,如果您在选择选项之前发出element.Click(); 怎么办?
  • 另一个猜测:连续两次调用selector.SelectByText("Medical");。
  • @alexce 谢谢!我实际上已经尝试过这两个选项。

标签: c# html selenium


【解决方案1】:

也可以使用css选择器绕过SelectElement类,直接找到选项。

string option = "Medical";
By css = By.CssSelector("Select>option[value='" + option + "']");
driver.FindElement(css).Click();

【讨论】:

  • 我会试一试,然后回复你!
  • 似乎这给了我与使用 Select Element 类相同的结果。感谢您的回复!
  • 这是一个公共网站,我们可以重现这个问题吗?
【解决方案2】:

使用下一行

 selector.selectByValue("Medical"); 

代替

 selector.SelectByText("Medical");

让我知道它是否有效。

【讨论】:

  • 似乎没有什么区别,两种情况都没有得到我想要的结果:/
【解决方案3】:

显然,一直走重复且“简单”的路线是正确的方式。这段代码帮助我通过了测试:

driver.FindElement(By.Name("DISPLAY_CoverageType")).Click();
driver.FindElement(By.XPath("//td[4]/select/option[3]")).Click();
driver.FindElement(By.XPath("//td[4]/select/option[3]")).Click();

感谢@alecxe 提出重复通话的想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2018-02-17
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多