Selenium:单击CheckBox失败并出现ElementNotVisibleException

时间:2014-11-17 21:16:00

标签: c# selenium

我在屏幕上显示了一个模态div,其中包含一个复选框列表。在调试模式下,我可以手动单击该复选框。但是通过自动化,单击复选框会因ElementNotVisibleException而失败。另外,如果我检查显示的属性,它是假的,如果我查看计算的CSS,显示=无。

隔离复选框的代码如下所示:

var panelCheckBox = tds[2].FindElement(By.TagName("input"));
panelCheckBox.Click();

当我看到它并手动检查它时,为什么计算的元素不可见(然后在代码中看到已检查的属性发生变化)?

2 个答案:

答案 0 :(得分:1)

事实证明,Selenium不会点击具有display:none属性集的元素。即使它在UI中实际可见,Selenium也不会触摸它。

发现输入元素中有一个空的兄弟<label>元素,它通过启动Firefox和Selenium IDE扩展来捕获click事件,并记录Selenium所说的被点击的内容。

答案 1 :(得分:1)

如果它有帮助,你可以使用IJavascriptExecutor点击&#34;隐形&#34;元件。对于selenium,可能是检查元素是否可见,但是启动Javascript始终有效。

所以在你的情况下,它可能是这样的:

var js = Driver as IJavaScriptExecutor;

 if (js != null)
{
    js.ExecuteScript("document.getElementById('t2').getElementsByTagName('input')[0].click();") 
}