如何为CucumberJS场景大纲编写对应Step文件?
Got it, let's fix those step definitions! Protractor's auto-generated code is just a placeholder—you need to fill in actual logic to interact with your page and validate results. Here's how to write the correct step file for your Color Feature:
Correct Step Definitions for Your Color Feature
First, save this as something like colorSteps.js (your step definition file):
const { Given, When, Then } = require('cucumber'); const { browser, element, by, expect } = require('protractor'); // Store input colors if you need them for later logic let inputColorOne, inputColorTwo; Given('the first color is {string}', (color) => { // Save the first color value inputColorOne = color; // Add logic here to set this color on your page (e.g., select from a dropdown) // Example: element(by.id('first-color-picker')).sendKeys(color); }); And('the second color is {string}', (color) => { // Save the second color value inputColorTwo = color; // Add logic here to set this color on your page // Example: element(by.id('second-color-picker')).sendKeys(color); }); When('the user loads page', async () => { // Navigate to your target page await browser.get('https://your-app-url.com/color-page'); // Wait for Angular to load (skip if not using Angular) await browser.waitForAngular(); }); Then('the {string} is displayed', async (expectedColor) => { // Locate the element that shows the resulting color const resultElement = element(by.css('.result-color-box')); // Replace with your actual locator // Get the color from the element (adjust CSS property based on your UI) const actualColorRGB = await resultElement.getCssValue('background-color'); // Helper to map color names to RGB values (browsers return RGB for CSS colors) const colorToRGB = { red: 'rgb(255, 0, 0)', white: 'rgb(255, 255, 255)', pink: 'rgb(255, 192, 203)', blue: 'rgb(0, 0, 255)', black: 'rgb(0, 0, 0)', green: 'rgb(0, 128, 0)', purple: 'rgb(128, 0, 128)' }; // Validate the displayed color matches the expected one expect(actualColorRGB).toEqual(colorToRGB[expectedColor.toLowerCase()]); });
Key Details to Adjust:
- Element Locators: Replace
by.css('.result-color-box')and any other locators with the actual selectors from your application (likeby.id,by.className). - Page URL: Swap
https://your-app-url.com/color-pagewith your real page address. - Color Setting Logic: In the
Given/Andsteps, add code to set the input colors on your page (e.g., selecting from a dropdown, clicking a color swatch). - CSS Property: If the color is displayed as text instead of a background, change
background-colortocolorin thegetCssValuecall.
The {string} placeholder in each step matches the <COLOR_ONE>, <COLOR_TWO>, <COLOR_THREE> variables from your Scenario Outline—Cucumber automatically passes these values into the step functions. Using async/await ensures Protractor runs steps in the correct order since all browser operations are asynchronous.
内容的提问来源于stack exchange,提问作者o.o
相关产品推荐
相关产品推荐

