出于某种原因,Watir说我的页面的页脚不可见。
我的测试设置为截屏,我可以在页面截图中看到页脚。
我通过以下方式截取屏幕截图:
@browser.driver.save_screenshot(output + "/" + screenshot)
在代码中测试行:
puts "waiting for bottom sticker"
Watir::Wait.until { @browser.div(:id => "bottom-sticker").exists? }
puts "bottom sticker found"
puts "bottom sticker exists: " + @browser.div(:id => "bottom-sticker").exists?.to_s
puts "bottom sticker present: " + @browser.div(:id => "bottom-sticker").present?.to_s
puts "bottom sticker visible: " + @browser.div(:id => "bottom-sticker").visible?.to_s
测试日志:
waiting for bottom sticker bottom sticker found bottom sticker exists: true bottom sticker present: false bottom sticker visible: false
Watir报告页面中的其他元素是可见的和存在的。底部贴纸div是一个身体的孩子,所以它不被父母隐藏。
有什么想法吗?
答案 0 :(得分:2)
我发现这个问题不是由于watir,而是源于硒。我最终找到了Selenium docs的链接。我确实有溢出:在我的div上隐藏样式并删除它使内容在Watir中可用。
Selenium必定存在一些问题,因为内容肯定没有溢出,并且在使用selenium浏览器拍摄的屏幕截图中绝对可见。
答案 1 :(得分:0)
您需要等到元素存在。
现在你正在等待它存在,这意味着它只等到在html中找到元素而不在屏幕上。等到现在将等到HTML中找到元素 AND 在屏幕上。参考下面的注释以了解使用哪个断言:
Watir中使用三种不同的方法来确定浏览器中的对象状态。它们是.exists?,。present?和.visible?。
首选方法是.present?
三者之间的差异是:
.exists?
.present?
。可见?