1

我正在尝试从下拉菜单中选择一个元素。

在我的页面上,下拉项目都是跨度的,看起来像这样:

<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();
4

0 回答 0