我正在尝试从下拉菜单中选择一个元素。
在我的页面上,下拉菜单都是跨度的,看起来像这样:
<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)。我必须使用XPath来匹配看起来像这样的东西(我在使用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();