【问题标题】:SelectElement in Selenium 2.39 failsSelenium 2.39 中的 SelectElement 失败
【发布时间】:2014-01-28 18:18:39
【问题描述】:
I use to pick items from drop-down menus using `SelectElement` class in my automated tests  and they worked just fine until I upgraded to Selenium 2.39 .

 ALL (!) tests that use this class fail and I get error message: `"Element is not currently visible and so may not be interacted with".`


    I presume there is a bug in 2.39. Tested on Firefox 26.0. Anyone knows how to fix this problem?

//Here's a piece of my HTML:

    <select id="CodGender" class="ui-selectmenu-element" name="CodGender" data-val-required="Mandatory attribute" data-val="true" aria-disabled="false">
        <option value=""></option>
        <option value="M">Male</option>
        <option value="Z">Female</option>
    </select>

//and here's how I'd pick an item from the drop-down:

    {   var dropDownList = driver.FindElement(By.XPath("[@id='CodGender']"));
        var selectElement = new SelectElement(dropDownList);
        selectElement.SelectByText("Male");
    }

这是通过第二行代码后“dropDownList”的快速观察窗口结果: 显示为假 启用 true 位置 {X = -1658 Y = 791} 选择假 尺寸 {宽度 = 200 高度 = 30} 标记名称“选择” 文字“”

... 这是 "selectElement" 的一个: AllSelectedOptions 计数 = 1 IsMultiple 错误 选项计数 = 3 [0] {OpenQA.Selenium.Firefox.FirefoxWebElement} [1] {OpenQA.Selenium.Firefox.FirefoxWebElement} [2] {OpenQA.Selenium.Firefox.FirefoxWebElement}

... 然后选项 2 看起来像: [OpenQA.Selenium.Firefox.FirefoxWebElement] {OpenQA.Selenium.Firefox.FirefoxWebElement} 显示为假 启用 true 位置 {X = -1656 Y = 851} 选择假 尺寸 {宽度 = 197 高度 = 16} 标记名称“选项” 文本 ”” ...

【问题讨论】:

  • 即使通过您自己的调试,select 也是不可见的。那么用户必须做什么才能使其可见呢?

标签: c# drop-down-menu selenium-webdriver


【解决方案1】:

看起来您需要显式等待元素变为可见或启用。

您没有收到 NoSuchElementException 的事实表明 webdriver 知道该元素的存在。我建议添加等待下拉菜单可见,为了安全起见,您还可以添加等待所需文本可见的等待。这将阻止 webdriver 在选项可用之前尝试选择该选项。

【讨论】:

  • 我多次调试代码,让所有元素都有足够的时间显示出来。根本没用。
【解决方案2】:

这是来自 Selenium Team 的 James 的回答: 他彻底解释了提到的问题,并提供了一些如何解决它的指南......

" 好的,这里可能发生的情况是您的网站正在使用某种 JavaScript UI 小部件框架(可能是 jQueryUI?),它通过使用和元素模拟下拉,但将实际数据存储在元素中。保存实际数据的元素不可见,可能被“ui-selectmenu-element”CSS 类隐藏。

WebDriver 无法与隐藏元素交互(单击、发送键等),句号。您可以在以前版本的 WebDriver 中操纵不可见元素这一事实是一个错误,现在已得到修复。

您现在有三个选择。首先,您可以使用 UI 中实际可见的 UI 元素来选择适当的值。其次,您可以使用 JavaScript 以及您正在使用的任何 JavaScript UI 工具包的 API,以编程方式操作“下拉”控件。对于这两个选项中的任何一个,您将无法使用 SelectElement 类来操作控件,因为您要操作的元素不是元素。最后,您可以以某种方式使实际元素变得可见,但是您需要弄清楚 UI 小部件框架的内部工作原理以操纵元素以使其可见。 "

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多