我在浏览器中使用Selenium并通过无头ruby gem将其与xvfb一起使用。当我在浏览器中运行测试时,测试通过。当我使用HEADLESS运行相同的测试时,它在此时尝试选择复选框元素时失败:
<div id="edit-field-industry-und" class="form-checkboxes">
<li id="50" class="half selected">
<div class="form-item form-type-checkbox form-item-field-industry-und-50">
<input id="edit-field-industry-und-50" class="form-checkbox" type="checkbox" checked="checked" value="50" name="field_industry[und][50]">
<label class="option" for="edit-field-industry-und-50">Aerospace</label>
</div>
</li>
</div>
注意: HTML中的输入已隐藏!!
错误: 元素不可点击(849.433349609375,21)。其他元素将收到点击:(Selenium :: WebDriver :: Error :: UnknownError)
不确定为什么设计师会这样做(A Drupal网站顺便说一句),但我怀疑这个复选框元素是否包含在 div 中作为 li (列表元素)。
我的问题是为什么我能够点击浏览器中的按钮,但不能在缓冲区中?另外,是否有办法解决检查css文件中隐藏的对象的问题?
答案 0 :(得分:0)
您是否尝试过PhantomJS(http://phantomjs.org/)进行无头测试?它与Selenium完美配合。您也可以使用JavascriptExecutor单击隐藏元素。
答案 1 :(得分:0)
大多数情况下,当您发生这种情况时,您在xvfb中运行不同的浏览器分辨率,这会导致css的行为不同。您可以使用browser.window.size
进行验证,并通过browser.window.resize_to 1600, 1200
或browser.window.maximize