我正在使用Intel的html5 app development framework。特别是,我使用their carousel plugin。但我怀疑webdriver的知识在这里更有用。Selenium ElementNotVisibleException在封闭div应用了变换时
他们的旋转木马工作方式是页面在一个宽度有限且溢出隐藏的div内相互浮动。您一次只能通过div“视口”看到其中一个页面。
当您触摸移动到下一个div时,它将应用css转换来动画滑动页面div。这工作正常。然而,webdriver在动画div中的元素有问题。
当您在第一页上时,selenium会报告显示的所有元素(在这两个页面上),即使其中一半隐藏了。转换到第二页后,Selenium会报告所有元素(在这两个页面上)未显示。
我跟踪它到是被应用到动画的div这个CSS属性:
-webkit-transform: translate3d(-1024px, 0px, 0);
当这个应用,硒认为这个元素是不可见的。当我使用Chrome开发人员工具删除它时,它认为它们都是可见的。
两种方式也许能帮助我:
- 我能得到硒报告这些元素正确的知名度?也许通过调整旋转木马的工作方式? (它是开源的)。
- 我可以告诉硒只是点击元素,即使它是“不可见”?
我也在他们的论坛上询问过英特尔(https://forums.html5dev-software.intel.com/viewtopic.php?f=28&t=4111),但似乎这是更多的webdriver问题,看到元素实际上是可见的! –
这似乎是Selenium团队长期以来一直在解决的一个反复出现的问题。见例如https://github.com/lightbody/browsermob-proxy#using-with-selenium。你使用哪个Selenium版本?尝试将其更新至当前的2.33.0版本,随着时间的推移不断改进。它在任何浏览器中都能正常工作,还是在所有浏览器中都失败(FF和Chrome是最重要的功能)。 –
我试过最新版本的硒。我在Windows 8上使用Chrome。我可能能够在另一个浏览器中测试,但我实际上正在开发一个针对webkit的混合应用程序,因此在其他浏览器中运行并不容易。 –