portrino / codeception-yandex-module
通过雅虎API提供结构化数据的验证
Requires
- codeception/codeception: ~2.3
- flow/jsonpath: ~0.3
- nixsolutions/yandex-php-library: ~3.0.0
Requires (Dev)
- phpstan/phpstan: ^0.8
- phpunit/phpunit: ~6.4
- squizlabs/php_codesniffer: ~3.0.2
README
此包通过结构化数据验证API从雅虎提供响应验证。您可以根据当前词汇表(如schema.org)自动检查您的嵌入式结构化数据标记(也称为语义标记)是否正确。
要向API传输数据,您需要指定页面HTML代码或URL。完成验证后,API将以JSON格式输出从页面提取的结构化数据,以及任何检测到的错误代码。目前支持以下语法:JSON-LD、RDFa、microdata和microformats。
来源:https://tech.yandex.com/validator/
使用此模块,您可以通过codeception自动化测试语义数据验证。在开发新功能时,您可以节省时间,因为您不必手动将标记复制到结构化数据测试工具或结构化数据验证器,以检查某些新功能或错误修复是否破坏了您的语义标记。
您还可以使用此模块自动化大量页面的结构化数据验证。
安装
您需要将存储库添加到您的composer.json文件中
composer require --dev portrino/codeception-yandex-module
用法
您可以通过将 'Yandex' 添加到您的Codeception套件配置中启用的模块来使用此模块,就像使用其他Codeception模块一样。
启用模块并设置配置变量
- 注册后,您可以在此处获取
apiKey
:https://developer.tech.yandex.ru/ url
可以直接在配置文件中设置,也可以通过环境变量设置:%BASE_URL%
modules: enabled: - Yandex: depends: PhpBrowser url: ADD_YOUR_BASE_URL_HERE apiKey: ADD_YOUR_API_KEY_HERE
更新Codeception构建
codecept build
实现cept / cest
$I->wantToTest('If structured data for page is valid.'); $I->amOnPage('foo/bar/'); $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK); // 200 // validate all $I->seeResponseContainsValidStructuredDataMarkup(); // validate only JSON+LD $I->seeResponseContainsValidJsonLdMarkup(); // validate only Microdata $I->seeResponseContainsValidMicrodataMarkup(); // validate only Microformat $I->seeResponseContainsValidMicroformatMarkup(); // validate only Rdfa $I->seeResponseContainsValidRdfaMarkup(); // grab the data array from Yandex API response // @see: https://tech.yandex.com/validator/doc/dg/concepts/response_standart-docpage/ $data = $I->grabStructuredDataFromApiResponse()['json-ld']; // grab the data from Yandex API response via jsonPath // !Important: All chars like . // / and - are replaced by _ to make jsonPath working! $I->assertEquals( 'foo.com', $I->grabStructuredDataFromApiResponseByJsonPath('json_ld.0.http___schema_org_name.0._value')[0] );
方法
seeResponseContainsValidStructuredDataMarkup()
验证来自$I->amOnPage('/foo/bar/');
的当前响应与结构化数据验证API,并检查所有受支持的格式,如:JSON-LD、RDFa、microdata和microformats。
$I->seeResponseContainsValidStructuredDataMarkup();
seeResponseContainsValidJsonLdMarkup()
验证来自$I->amOnPage('/foo/bar/');
的当前响应与结构化数据验证API,并仅检查JSON-LD
格式的数据。
$I->seeResponseContainsValidJsonLdMarkup();
查看响应是否包含有效的微数据标记
验证来自 $I->amOnPage('/foo/bar/');
的当前响应是否与结构化数据验证器 API 匹配,并仅检查以 微数据 格式存在的数据。
$I->seeResponseContainsValidMicrodataMarkup();
查看响应是否包含有效的微格式标记
验证来自 $I->amOnPage('/foo/bar/');
的当前响应是否与结构化数据验证器 API 匹配,并仅检查以 微格式 格式存在的数据。
$I->seeResponseContainsValidMicroformatMarkup();
查看响应是否包含有效的 RDFa 标记
验证来自 $I->amOnPage('/foo/bar/');
的当前响应是否与结构化数据验证器 API 匹配,并仅检查以 RDFa 格式存在的数据。
$I->seeResponseContainsValidRdfaMarkup();
从 API 响应中获取结构化数据
从当前响应中获取结构化数据,并以数组形式返回。请参阅 https://tech.yandex.com/validator/doc/dg/concepts/response_standart-docpage/ 了解 Yandex API 的标准响应格式信息。
$data = $I->grabStructuredDataFromApiResponse();
通过 jsonPath 查询语法从 API 响应中获取结构化数据
实验性!!!
借助 JSONPath PHP 包,通过 jsonPath 查询语法从当前响应中获取结构化数据。所有“特殊”字符如
- .
- //
- /
-
- :
- @
- '
- \
在 Yandex 结构化数据验证器 API 的 json 响应中被替换为 _ 以使 jsonPath 能够正常工作!
$data = $I->grabStructuredDataFromApiResponseByJsonPath('json_ld.0.http___schema_org_name.0._value');
作者
- André Wuttig - 初始工作,单元测试 - aWuttig
还可以查看参与此项目的 贡献者列表。