Selenium ElementNotVisibleException当封闭的div已应用转换时

Selenium ElementNotVisibleException当封闭的div已应用转换时,selenium,webdriver,carousel,appmobi,Selenium,Webdriver,Carousel,Appmobi,我用的是英特尔的。特别是,我正在使用。但我怀疑webdriver的知识在这里更有用 他们的旋转木马的工作方式是,页面在一个div内彼此相邻浮动,div的宽度有限,溢出隐藏。通过div“viewport”,一次只能看到一个页面 当您触摸以移动到下一个div时,它会应用css变换来设置滑动页面div的动画。这个很好用。但是webdriver在动画分区内的元素方面有问题 当您在第一个页面上时,selenium会报告显示的所有元素(在两个页面上),即使其中一半是隐藏的。转换到第二个页面后,seleniu

我用的是英特尔的。特别是,我正在使用。但我怀疑webdriver的知识在这里更有用

他们的旋转木马的工作方式是,页面在一个div内彼此相邻浮动,div的宽度有限,溢出隐藏。通过div“viewport”,一次只能看到一个页面

当您触摸以移动到下一个div时,它会应用css变换来设置滑动页面div的动画。这个很好用。但是webdriver在动画分区内的元素方面有问题

当您在第一个页面上时,selenium会报告显示的所有元素(在两个页面上),即使其中一半是隐藏的。转换到第二个页面后,selenium会将所有元素(在两个页面上)报告为未显示

我跟踪到了应用于动画div的css属性:

-webkit-transform: translate3d(-1024px, 0px, 0);
应用此选项时,selenium认为此元素不可见。当我使用Chrome开发者工具删除它时,它认为它们都是可见的

您可以通过两种方式帮助我:

  • 我能让selenium正确报告这些元素的可见性吗?也许通过调整旋转木马的工作方式?(它是开源的)
  • 我可以告诉selenium尽管元素“不可见”,但还是要单击它吗

我已经找到了一个旋转木马的调整方法,看起来很有效,但它可能会以某种我没有预料到的方式扰乱行为。我在moveCSS3中替换了这一行

el.style[$.feat.cssPrefix+"Transform"] = "translate" + translateOpen + distanceToMove.x + "px," + distanceToMove.y + "px" + translateClose;

这似乎有效


欢迎其他答案。这是一个我应该向selenium报告的bug吗?

这通过绕过selenium中的bug解决了问题

new Actions(driver).MoveToElement(element).Click().Perform();

Selenium可以使用此代码单击链接。现在,我只需要尝试获取一个最小的示例,作为向selenium的维护人员报告的bug。。。棘手。

我也在他们的论坛()上询问过英特尔,但这似乎更像是一个webdriver问题,因为元素实际上是可见的!这似乎是Selenium团队长期以来一直在解决的一个反复出现的问题。见例。您使用的是哪个Selenium版本?尝试将其更新到当前的2.33.0,随着时间的推移,它已经得到了不断的改进。它在任何浏览器中都能工作,还是在所有浏览器中都失败了(FF和Chrome是主要的功能)。我在Windows8上使用Chrome。我可能可以在另一个浏览器中进行测试,但实际上我正在开发一个针对webkit的混合应用程序,因此在其他浏览器中运行并不容易。我已经询问了插件维护人员对这个修复的看法:有人编辑了我的答案,以使用camelCase作为方法名称。我把它还原了,因为这个例子是C语言的,而不是Java语言的。
new Actions(driver).MoveToElement(element).Click().Perform();