-1

作为自动化测试的一部分,我们希望检查使用 Zebkit UI 框架构成的网站中的元素。

我们无法使用 zebra.ui 找到元素

示例可以在这里找到

有人可以帮助我们检查元素吗

4

3 回答 3

4

Zebkit UI 组件在 HTML5 Canvas 上呈现。因此它们不是浏览器 DOM 树的一部分,这对于期望 DOM 作为输入的测试工具来说可能是个问题。但这并不意味着你不能通过 zebkit UI 的东西来执行测试用例。

首先要记住zebkit 组件是像 DOM 一样的层次结构/树。每个呈现在画布上的 zebkit UI 组件都有一个相应类的相关 JS 实例。您可以使用多种 API 方法来遍历 UI 组件树。这些方法需要路径(类似 XPath),因为路径(从我的角度来看)比 CSS 选择器的“加密”方式更少。

您可能需要的 API 方法:

  • byPath(path [,callback]) - 通过给定路径遍历 UI 组件树

    var zcanvas = new zebkit.ui.zCanvas(); ... // travel over all UI components in tree zcanvas.byPath("//*", function(comp) { // perform test cases here ... });

  • properties([path,] properties)将指定的属性集应用于给定路径请求的组件或组件数量

    var zcanvas = new zebkit.ui.zCanvas(); ... // set color property to black value for all labels zcanvas.properties("//zebkit.ui.Label", { color: "black" });

  • on([eventName], [path], handler)为给定组件或由路径标识的组件的给定事件(或所有事件)添加侦听器方法:

    var zcanvas = new zebkit.ui.zCanvas(); ... // register event listener for all found buttons zcanvas.on("//zebkit.ui.Button", function (src) { // handle button press event here ... });

  • fire([eventName,] [path,] [argument])将给定事件触发给给定组件或用路径标识的组件:

    var zcanvas = new zebkit.ui.zCanvas(); ... // fire button pressed event to button with id equals "testButton" zcanvas.fire("//[@id='testButton']"); ... // or the same with a shortcut zcanvas.fire("#testButton");

于 2017-05-08T09:19:50.280 回答
0

我不确定我是否正确理解了您的问题,但假设您无法单击右键canvas打开上下文菜单并选择“检查元素”选项。

你可以

  • F12在浏览器中按
  • 切换到“元素”/“HTML”选项卡
  • 在搜索字段 ( CTRL+ F) 中打印"canvas"/"<canvas"并按Enter
  • 继续按下Enter直到canvas找到所需(当前元素应突出显示)
于 2017-03-22T12:01:42.930 回答
0

这些控件是使用 HTML5CANVAS标记实现的。Selenium 看不到这个标签的“内部”,因为它不包含 HTML。它就像页面内的应用程序。从您链接的页面看来,您应该能够使用 JS 访问控件内的元素。当我过去用标签做事时CANVAS,我通常会找到执行或返回我想要的东西的 JS,然后将该代码包装在我可以调用的函数中。它会起作用,但您可能需要对 Zebkit 进行一些研究,以找出您需要验证的 JS 等等。您想要验证的所有不同的东西......最终您可能不会能够验证一些事情。

于 2017-03-22T13:53:48.117 回答