Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何使用带量角器的aXe access.tool?_Typescript_Protractor_Accessibility_Axe - Fatal编程技术网

Typescript 如何使用带量角器的aXe access.tool?

Typescript 如何使用带量角器的aXe access.tool?,typescript,protractor,accessibility,axe,Typescript,Protractor,Accessibility,Axe,我正在尝试为我们的自动化测试套件实现一个可访问性测试工具。我正在用BDD(Cumber)在vsCode上测试一个带量角器的angular应用程序。测试是用typescript编写的,断言是用chai实现的 关于如何实现这个测试工具,我看到了很多不同的想法,但大多数都已经过时了,或者根本不适合我 现在发生的基本情况是,当我运行一个测试用例时,它通过了,但最后我在控制台中得到了一个错误: 未处理的PromisejectionWarning:NoSuchSessionError:此驱动程序 实例没有有

我正在尝试为我们的自动化测试套件实现一个可访问性测试工具。我正在用BDD(Cumber)在vsCode上测试一个带量角器的angular应用程序。测试是用typescript编写的,断言是用chai实现的

关于如何实现这个测试工具,我看到了很多不同的想法,但大多数都已经过时了,或者根本不适合我

现在发生的基本情况是,当我运行一个测试用例时,它通过了,但最后我在控制台中得到了一个错误:

未处理的PromisejectionWarning:NoSuchSessionError:此驱动程序 实例没有有效的会话ID(您是否调用了 WebDriver.quit()?)并可能不再使用。 在会话\流程\承诺(C:\Projekt\node\ modules\dragrator\node\ modules\selenium webdriver\lib\webdriver.js:847:16)

这告诉我的是,测试在关闭窗口后的after()钩子中运行、通过,然后(可能?)axe尝试运行其可访问性测试,但由于关闭了窗口,测试无效

到目前为止我所做的:

已安装npm

  • “量角器可访问性插件”
  • --保存开发人员“selenium webdriver@^2.46.1”(我有一个错误,它说没有安装对等依赖项)
  • axe核心--保存开发
我将aXe作为插件放在我的config.ts中:

import { browser, Config } from 'protractor';
从“../support/Reporter”导入{Reporter}; 导入路径=需要(“路径”)

导出常量配置:配置={ directConnect:没错, 硒承诺经理:错, ignoreUncaughtExceptions:true

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>
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;
}
当然还有一个页面文件,其中包含正确的选择器、元素和函数定义

如果你需要更多的信息,我会提供

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;
}