📅  最后修改于: 2023-12-03 14:50:35.100000             🧑  作者: Mango
getBy image
是一种反应测试库,可以在测试中通过一张图片识别元素的位置。
这个库特别适用于那些需要验证网页布局渲染的测试用例。当我们需要在不同的分辨率下测试网页布局时,传统的测试方法可能会失效,因为元素的位置和大小可能会随着分辨率的变化而变化。而getBy image
不受分辨率的限制,只需要提供一张图片即可识别出指定元素的位置。
你可以使用npm
来安装getBy image
:
npm install get-by-image
或者你可以直接引入getBy.js
文件:
<script src="./path/to/getBy.js"></script>
getBy image
支持在常见的测试框架中使用,如mocha
、jasmine
、ava
等。
以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
打印出元素的标签名。
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,返回找不到元素的错误信息。
图片必须是元素的可见部分。
图片必须足够清晰,以保证识别的准确性。
图片的比例应与元素的比例相同,否则可能会导致位置偏移。
getBy image
是一个简单而又实用的测试库,让网页布局测试更加方便和高效。如果你需要在不同的分辨率下测试网页布局,或者想要更加准确地查找元素,那么这个库值得一试。