当我在 protractor-cucumber 中运行步骤定义文件时,浏览器没有捕获给定的 url

德芙丽娜

我是这个量角器黄瓜的新手。如果我出错了,请纠正我。我在运行功能文件时使用量角器 3.2.2,它给出了正确的输出。但是当我运行步骤定义时,浏览器不采用给定的 url。

我的功能文件如下。

Feature: Login page test   
Scenario: Verify whether the user is able to view the login page while 
giving the URL.   
Given I go to "http://localhost:4200/login"       
When The URL of the page should be "http://localhost:4200/login" 

我的步骤定义文件如下。

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');

chai.use(chaiAsPromised);
var expect = chai.expect;

module.exports = function() {

this.Given('I go to {string}', function (string) {
browser.get(string);
});
this.When('The URL of the page should be {string}', function (string) {
expect(browser.getCurrentUrl()).to.eventually.equal(string);
});
}

我的配置。文件如下

exports.config = {
seleniumAddress: 'http://127.0.0.1:4444/wd/hub', 
allScriptsTimeout: 11000,
specs: [ 
'features/*.feature'    
],  
capabilities: {  
'browserName': 'chrome'    
},  
directConnect: true,  
baseUrl: 'http://localhost:4200/login',
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),

cucumberOpts: {  
require: 'features/step_definitions/*.js',   
tags: false,
format: 'pretty',
profile: false,
'no-source': true
}  }; 

下面给出了当我运行 'protractor protractor.conf.js' 时显示的错误。

Using ChromeDriver directly...
[launcher] Running 1 instances of WebDriver
(node:7508) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use 
os.tmpdir() instead.
[7884:6800:1229/145724.847:ERROR:browser_gpu_channel_host_factory.cc(107)] 
Failed to launch GPU process.

DevTools listening on ws://127.0.0.1:12425/devtools/browser/74f2a81c-51c2-
4a8a-afec-26166a388d1f

C:\Users\CS1027C\AppData\Roaming\npm\node_modules\protractor\node_modules\se
lenium-webdriver\http\index.js:365
  onError(new Error(message));
          ^
Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:54206
at ClientRequest.<anonymous> (C:\Users\CS1027C\AppData\Roaming\npm\node_modu
les\protractor\node_modules\selenium-webdriver\http\index.js:365:15)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at Socket.socketErrorListener (_http_client.js:387:9)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
From: Task: WebDriver.createSession()
at acquireSession (C:\Users\CS1027C\AppData\Roaming\npm\node_modules\protrac
tor\node_modules\selenium-webdriver\lib\webdriver.js:62:22)
at Function.createSession (C:\Users\CS1027C\AppData\Roaming\npm\node_modules
\protractor\node_modules\selenium-webdriver\lib\webdriver.js:295:12)
at new Driver (C:\Users\CS1027C\AppData\Roaming\npm\node_modules\protractor\
node_modules\selenium-webdriver\chrome.js:778:38)
at DirectDriverProvider.getNewDriver (C:\Users\CS1027C\AppData\Roaming\npm\n
ode_modules\protractor\built\driverProviders\direct.js:69:16)
at Runner.createBrowser (C:\Users\CS1027C\AppData\Roaming\npm\node_modules\p
rotractor\built\runner.js:203:37)
at C:\Users\CS1027C\AppData\Roaming\npm\node_modules\protractor\built\runner
.js:293:21
at _fulfilled (C:\Users\CS1027C\AppData\Roaming\npm\node_modules\protractor\
node_modules\q\q.js:834:54)
at self.promiseDispatch.done (C:\Users\CS1027C\AppData\Roaming\npm\node_modu
les\protractor\node_modules\q\q.js:863:30)
at Promise.promise.promiseDispatch (C:\Users\CS1027C\AppData\Roaming\npm\nod
e_modules\protractor\node_modules\q\q.js:796:13)
at C:\Users\CS1027C\AppData\Roaming\npm\node_modules\protractor\node_modules
\q\q.js:556:49
[launcher] Process exited with error code 1
yong

从错误信息:Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:54206,

您的问题应该是由于使用较低的 chromedriver 和较高的 Chrome 浏览器引起的,升级 chromedriver 应该可以解决您的问题。

并在您的配置文件中更改cucumberOpts,如下所示:

cucumberOpts: {
    monochrome: true,
    strict: true,
    plugin: ["pretty"],
    require: [
        'features/step_definitions/*.js'
    ],
    tags: ''
}

更改您的步骤定义文件如下:(如果您使用 Cucumber 1 或以下)

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');

chai.use(chaiAsPromised);
var expect = chai.expect;

module.exports = function() {

    this.Given('I go to "(.*?)"', function (url) {
        browser.get(url);
    });

    this.When('The URL of the page should be "(.*?)"', function (url) {
        expect(browser.getCurrentUrl()).to.eventually.equal(url);
    });

};

如下更改您的步骤定义文件(如果您使用 Cucumber 2 或更高版本)

var {defineSupportCode} = require('cucumber');

defineSupportCode(function ({ Given, When, Then }) {

    Given('I go to "(.*?)"', function (url) {
        browser.get(url);
    });

    When('The URL of the page should be "(.*?)"', function (url) {
        expect(browser.getCurrentUrl()).to.eventually.equal(url);
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Protractor - E2E 测试仅在我将鼠标移到每个 Cucumber 场景的浏览器窗口上时开始

在 Cucumber Protractor 设置中获取未定义的步骤定义警告

当我访问某个URL时,如何下载在网络浏览器中自动下载的文件?

当我启动spring服务器时,在浏览器或邮递员中访问URL时得到404

当我在浏览器中直接输入 URL 时,重写规则不起作用

当我直接从浏览器更改URL时,rootscope重置

当我尝试从外壳程序打开浏览器和特定URL时,权限被拒绝

当我使用Windows平台时,是否可以使用Protractor进行无头测试?

即使将 firefox 设置为浏览器,Chrome 浏览器也会在我每次运行 Protractor 时打开

反应。为什么当我在请求后请求 api 时在我调用的浏览器 url 中出现 api

当我可以从浏览器访问URL时,WordPress永久链接GET和POST报告URL 404

使用带有循环的Protractor填写从Cucumber.js表获取数据的表单

当我无权访问或没有可用信息时,是否可以跳过URL(Json文件)

当我在Django中运行服务器时如何设置默认URL

Alamofire失败:当我在url上使用json时,invalidURL

当我访问不带www的URL时,nginx返回404

当我在浏览器中单击“后退”按钮时,我需要将上一页重新加载到“另一个URL”

当我的应用程序设置为默认应用程序以打开该URL时,如何强制在设备的浏览器中打开URL

我正在构建一个基于C#的浏览器,当我在输入URL的同时按E时,浏览器尝试导航至该地址

当我从网页上运行我的Linkedin URL时,它给我一个错误

当我想在我的 URL 中传递参数时读取了错误的 URL

当我使用sapply时,“ parse_url(url)中的错误:length(url)== 1不是TRUE”

Protractor-nodejs:如何从 url 中捕获动态文本

为什么我在Kotlin中运行此特定Cucumber步骤时得到ArrayIndexOutOfBoundsException?

当我们在浏览器中输入url并按Enter时,rails在技术上如何处理请求

当我使用改造call.request()。url()打印URL时,它会打印不同的URL

每当我在intellij想法中运行测试时,都会出现“无法识别的插件:org.jetbrains.plugins.cucumber.java.run.CucumberJvm2SMFormatter”错误

我有一个问题,当我放多个 url 时,数据会被覆盖

当我分享我的 Url 时,打开图形标签 HTML 在 Whatsapp 中不起作用