IE&Edge Selenium驱动程序无法在下拉列表中找到元素

时间:2018-06-20 15:43:09

标签: c# selenium xpath selenium-iedriver selenium-edgedriver

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

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

<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已正确分配)

这是控件的图片:

enter image description here

代码需要首先单击使下拉列表出现的字段,然后从列表中选择项目。

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

0 个答案:

没有答案