如何检查 Zebkit 的元素 UI

How to inspect element of Zebkit UI

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

我们无法使用 zebra.ui

找到元素

可以找到示例here

谁能帮我们检查元素

我不确定我是否正确理解了您的问题,但假设您无法在 canvas 上单击右键打开上下文菜单和 select "Inspect element" 选项。

你可以

  • 在浏览器中按 F12
  • 切换到"Elements"/"HTML"选项卡
  • 在搜索字段 (CTRL + F) 中打印 "canvas"/"<canvas" 并按 Enter
  • 继续按 Enter 直到找到所需的 canvas(当前元素应突出显示)

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

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

首先请记住 zebkit 组件是 hierarchy/tree 就像 DOM 一样。 每个渲染在 canvas zebkit UI组件有相应的class的相关JS实例。您可以使用多种 API 方法遍历 UI 组件树。这些方法需要路径(类似 XPath),因为路径(从我的角度来看)比 CSS 选择器少 "encrypted" 方式。

您可能需要的 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");