我创建了另一个问题,我认为这是导致此错误的原因:为什么 Selenium Firefox 驱动程序认为当父级溢出时我的模式不显示:隐藏?
Selenium 2.33.0 版
火狐驱动
导致错误的代码:
System.Threading.Thread.Sleep(5000);
var dimentions = driver.Manage().Window.Size;
var field = driver.FindElement(By.Id("addEmployees-password")); //displayed is true
field.Click(); //works fine
var element = driver.FindElement(By.Id(buttonName)); //displayed is false
element.Click(); //errors out
它试图点击的按钮:
<div id="addEmployees" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="addEmployeesLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>Add Employee</h3>
</div>
<div class="modal-body">
<p class="alert alert-info">
<input name="addEmployees-username" id="addEmployees-username" />
<input name="addEmployees-password" id="addEmployees-password" type="password" />
<input name="addEmployees-employee" id="addEmployees-employee" />
</p>
</div>
<div class="modal-footer">
<button name="addEmployees-add" id="addEmployees-add" type="button" class="btn" data-ng-click="submit()">Add</button>
</div>
</div>
- 如果我将调用更改为
FindElements
然后我得到一个元素,所以页面上没有其他任何内容。 - 如果我
FindElement
在按钮之前出现的字段上,比如说addEmployees-employee
,那么addEmployees-employee
是displayed
- 在浏览器本身中,它显示得很好,我需要做的就是实际单击按钮并执行所需的行为,但是 webdriver 拒绝考虑显示的元素
一个字段可以被认为显示而另一个字段不能被认为是如何显示的?
右下角带有添加按钮的模态,显示所有其他元素 = true
窗口大小为每 1200x645driver.Manage().Window.Size;
元素位置为:每 800x355y 元素尺寸为:每 driver.FindElement(By.Id(buttonName)).Location
51x30 driver.FindElement(By.Id(buttonName)).Size
密码元素位置为:每 552x233y driver.FindElement(By.Id("addEmployees-password")).Size