2013-07-15 112 views
2

我正在使用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开发人员工具删除它时,它认为它们都是可见的。

两种方式也许能帮助我:

  • 我能得到硒报告这些元素正确的知名度?也许通过调整旋转木马的工作方式? (它是开源的)。
  • 我可以告诉硒只是点击元素,即使它是“不可见”?
+0

我也在他们的论坛上询问过英特尔(https://forums.html5dev-software.intel.com/viewtopic.php?f=28&t=4111),但似乎这是更多的webdriver问题,看到元素实际上是可见的! –

+1

这似乎是Selenium团队长期以来一直在解决的一个反复出现的问题。见例如https://github.com/lightbody/browsermob-proxy#using-with-selenium。你使用哪个Selenium版本?尝试将其更新至当前的2.33.0版本,随着时间的推移不断改进。它在任何浏览器中都能正常工作,还是在所有浏览器中都失败(FF和Chrome是最重要的功能)。 –

+0

我试过最新版本的硒。我在Windows 8上使用Chrome。我可能能够在另一个浏览器中测试,但我实际上正在开发一个针对webkit的混合应用程序,因此在其他浏览器中运行并不容易。 –

回答

1

这解决了这个问题,通过解决硒中的错误。

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

硒可以点击链接使用此代码。现在我只需要尝试获取一个最简单的例子来作为一个错误报告给硒的维护者...棘手。

+0

有人编辑我的答案,将camelCase用于方法名称。我将它恢复了原状,因为这个例子在C#中,而不是在Java中。 –

0

我发现了一个似乎可以工作的旋转木马的调整,但它可能会以某种我没有预料到的方式弄乱行为。我换成这条线,在moveCSS3

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

el.style["margin-left"] = distanceToMove.x + "px"; 
el.style["margin-top"] = distanceToMove.y + "px"; 

这似乎工作。

欢迎其他答案。这是我应该向硒报告的错误吗?

+0

我向插件维护者询问了他们对此修复的看法:https://github.com/01org/af-carousel/issues/1 –