我正在尝试从下拉菜单中选择一个元素。
在我的页面上,下拉项目都是跨度的,看起来像这样:
<span class="dropdownlist" id="MyID">
<span class>Option 1</span>
<span class>Option 2</span>
<span class>Option 3</span>
<span class>Option 4</span>
因为唯一的标识符是innerText(我不想使用nth:childs)。我必须使用 XPaths 来匹配看起来像这样的东西(我在使用 C# 时转义了 " 标记):
//*[@id=\"MyID\"]/span[text()=\"Option 1\"]
当我使用 Chrome 驱动程序运行它时,它工作得非常好。但是,当我使用 IEDriver 或 EdgeDriver 时,它们都无法在列表中找到元素。
到目前为止,我所有的 CSS 选择器(以及一些非文本驱动的 XPath)在我的测试中都可以正常工作,只是下拉字段导致了我的问题。
我目前正在启动我的 IE 驱动程序,但没有设置任何功能,是否有一个我应该使用的选项?
更新:我尝试使用 CssSelector 并返回一个错误,指出我尝试单击的列表中的元素未显示。在单击之前运行一个小断言来检查元素是否显示会返回 false。
更新 2:我尝试从我的代码中运行一些 Java 脚本来为元素分配一个 ID,然后尝试使用它来单击它,但我得到了同样的错误(同样,这个方法适用于 chrome 和 ID正在正确分配)
这是控件的图片:
代码涉及首先单击使下拉列表出现的字段,然后从列表中选择项目。
dropDownField.Click();
IWebElement listItemToSelect=
driver.FindElement(By.XPath("//span[text()=\"Bangkok\"]"));
WebDriverWait wait = new WebDriverWait(driver,
TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//span[text()=\"Bangkok\"]")));
listItemToSelect.Click();