📜  反应测试库 getBy image - Javascript (1)

📅  最后修改于: 2023-12-03 14:50:35.100000             🧑  作者: Mango

反应测试库 getBy image - Javascript


简介

getBy image是一种反应测试库,可以在测试中通过一张图片识别元素的位置。

这个库特别适用于那些需要验证网页布局渲染的测试用例。当我们需要在不同的分辨率下测试网页布局时,传统的测试方法可能会失效,因为元素的位置和大小可能会随着分辨率的变化而变化。而getBy image不受分辨率的限制,只需要提供一张图片即可识别出指定元素的位置。

安装

你可以使用npm来安装getBy image

npm install get-by-image

或者你可以直接引入getBy.js文件:

<script src="./path/to/getBy.js"></script>
使用
在测试框架中使用

getBy image支持在常见的测试框架中使用,如mochajasmineava等。

mocha为例,你可以这样编写测试用例:

const assert = require('assert');
const { getByImage } = require('get-by-image');

describe('home page layout', () => {
  it('should render nav bar correctly', async () => {
    const imagePath = './path/to/nav-bar.png';
    const element = await getByImage(imagePath);
    assert.equal(element.tagName, 'NAV');
  });
});

在这个例子中,我们通过getByImage函数传入了一张图片nav-bar.png,然后getBy image会在当前网页中查找是否存在和这张图片相同的元素,并返回该元素。

在单独的脚本中使用

你也可以在单独的脚本中使用getBy image,如下所示:

const { getByImage } = require('get-by-image');

(async () => {
  const imagePath = './path/to/nav-bar.png';
  const element = await getByImage(imagePath);
  console.log(element.tagName);
})();

同样是通过getByImage函数传入图片路径来查找元素,并用console.log打印出元素的标签名。

API

getBy image提供了一个函数getByImage(imagePath: string, options?: object) => Promise<HTMLElement>,接受两个参数:

  • imagePath:要查找的图片路径。

  • options:可选项。如果指定了可选项,getBy image会使用这些选项来查找元素。可选项包括:

    • timeout:搜索元素的超时时间,单位为毫秒。默认为5000毫秒。
    • similarity:图片相似度阈值。默认为0.8。当元素和图片的相似度低于这个阈值时,getBy image会继续搜索其他元素。

getByImage函数返回一个Promise对象,表示查找元素的异步操作。如果元素找到了,Promise会以该元素作为结果被resolve;否则,Promise会被reject,返回找不到元素的错误信息。

注意事项
  1. 图片必须是元素的可见部分。

  2. 图片必须足够清晰,以保证识别的准确性。

  3. 图片的比例应与元素的比例相同,否则可能会导致位置偏移。

结语

getBy image是一个简单而又实用的测试库,让网页布局测试更加方便和高效。如果你需要在不同的分辨率下测试网页布局,或者想要更加准确地查找元素,那么这个库值得一试。