我在屏幕上显示了一个模态div,其中包含一个复选框列表。在调试模式下,我可以手动单击该复选框。但是通过自动化,单击复选框会因ElementNotVisibleException而失败。另外,如果我检查显示的属性,它是假的,如果我查看计算的CSS,显示=无。
隔离复选框的代码如下所示:
var panelCheckBox = tds[2].FindElement(By.TagName("input"));
panelCheckBox.Click();
当我看到它并手动检查它时,为什么计算的元素不可见(然后在代码中看到已检查的属性发生变化)?
答案 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();")
}