2

我正在使用英特尔的html5 应用程序开发框架。特别是,我正在使用他们的轮播插件。但我怀疑 webdriver 的知识在这里更有用。

他们的轮播的工作方式是页面在一个 div 中彼此相邻浮动,该 div 具有有限的宽度并隐藏了溢出。通过 div“视口”一次只能看到一个页面。

当您触摸以移动到下一个 div 时,它会应用 css 转换来动画滑动页面 div 过去。这工作正常。但是 webdriver 对动画 div 中的元素有问题。

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

我将其追踪到这个应用于动画 div 的 css 属性:

-webkit-transform: translate3d(-1024px, 0px, 0);

当应用这个时,selenium 认为这个元素是不可见的。当我使用 Chrome 开发者工具删除它时,它认为它们都是可见的。

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

  • 我可以让硒正确报告这些元素的可见性吗?也许通过调整旋转木马的工作方式?(它是开源的)。
  • 我可以告诉 selenium 无论如何都单击该元素,即使它“不可见”?
4

2 回答 2

1

这通过绕过 selenium 中的错误解决了这个问题。

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

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

于 2013-07-16T12:53:06.847 回答
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";

这似乎有效。

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

于 2013-07-15T12:11:52.767 回答