问题描述
我正在尝试对我们的自动化测试套件实施可访问性测试工具。我正在BDD(黄瓜)中的vsCode上使用量角器测试角度应用程序。测试是用打字稿编写的,断言是使用chai进行的。
关于如何实现此测试工具,我看到了许多不同的想法。但是,大多数想法已经过时或对我不起作用。
基本上现在发生的是,当我运行一个测试用例时,它通过了,但是最后我在控制台中得到了一个错误:
UnhandledPromiseRejection警告:NoSuchSessionError:此驱动程序 实例没有有效的会话ID(您是否致电 WebDriver.quit()?),可能不再使用。 在session_.flow_.promise(C:\ Projekt \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver.js:847:16)
这告诉我的是,该测试在after()钩子中运行,通过,关闭了窗口,然后(可能吗?)ax尝试运行其可访问性测试,但由于关闭了窗口,所以很有利。
到目前为止我做了什么:
已安装npm
- “量角器-可访问性插件”
- -save-dev“ selenium-webdriver@^2.46.1”(我说没有安装对等依赖项时出错,
- axe-core --save-dev
import { browser,Config } from 'protractor';
从“ ../support/reporter”导入{Reporter}; 导入路径= require('path');
export const config:Config = { directConnect:是的, SELENIUM_PROMISE_MANAGER:否, ignoreUncaughtExceptions:是
capabilities: {
browserName: 'chrome',chromeOptions: {
prefs: {
download: {
'prompt_for_download': false,'directory_upgrade': true,'default_directory': path.resolve('./testdownloads'),}
}
}
},framework: 'custom',frameworkPath: require.resolve('protractor-cucumber-framework'),specs: [
'../../features/**/*.feature',],plugins: [{
axe: true,package: 'protractor-accessibility-plugin'
}],onPrepare: () => {
console.log('conf.js: onPrepare');
browser.manage().window().maximize();
},allScriptsTimeout: 3 * 60 * 1000,cucumberOpts: {
compiler: 'ts:ts-node/register',format: ['json:./reports/json/cucumber_report.json'],require: ['../../e2e-build/step_deFinitions/**/*.steps.js','../../e2e-build/support/*.js','../../e2e-build/step_deFinitions/**/*.walks.js'],tags: '@mystuff'
},onComplete: () => {
console.log('conf.js: onComplete');
},afterLaunch: () => {
console.log('conf.js: afterLaunch');
Reporter.createHTMLReport();
}
在另一个来源上,我发现应该将其插入我的灯具中
<script src="node_modules/axe-core/axe.min.js"></script>
但是我真的不知道在这种情况下的固定装置是什么。我无法在pageObject.ts或stepDeFinition.ts文件中编写脚本,并且它肯定不应该进入我的功能文件。 我能想到的唯一可能性是将其写入js文件中,但随后又自动生成了多数民众赞成,因此编辑该文件感觉不对。
如果有人可以引导我逐步了解在哪里以及如何使用斧头,我将不胜感激。 基本上我的问题:
让我们假设一个简单的情况供参考:
myFeature.feature:
Given i am on mywebsite.com
When i click my button
Then something happens
myStepDef.ts:
Given(/^i am on mywebsite.com$/,async function (){
await browser.get('www.mywebsite.com');
}
When(/^i click my button$/,async function () {
await myButton.click();
}
Then(/^something happens/,async function () {
expect(somethingHappening()).to.be.true;
}
如果您需要更多信息,我会提供!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)