2

以下は、ページからデータを取得し、エイリアスとして変数に保存するシナリオです。次に、他のシナリオで同じ変数/データを使用して入力フィールドに入力したいと考えています。エイリアスを使用していますが、このエラーが発生します。

cy.wait() は、@Orderinfo の登録済みエイリアスを見つけることができませんでした。あなたはまだエイリアスを作成していません。

それもちゃんと同盟を結びました。@Orderinfo にデータ ストアがありますが、他のシナリオ ステップではアクセスできません。

Then("Get Data from page", () => {
  cy.get(".os-order-number").invoke("text").then(($Oid) => {
    let Order = $Oid.text();
    let Order_id = Order.replace(/[^0-9]/g, "");
    cy.wrap(Order_id).as("Orderinfo");
  });
});


Given("Go to Login", () => {
  cy.visit("https://dev.simplifyshopping.com/register/");
});

When("Paste variable here", () => {
  cy.wait(2000);
  cy.wait("@Orderinfo")
  cy.get("@Orderinfo")).then((Orderinfo) => {
    console.log(Orderinfo);
    cy.get("#id_email").type(Orderinfo);
  });
});
4

2 に答える 2

3

そのため、Cucumber Preprocessor を使用する Cypress では、同じシナリオの複数のステップでの使用とシナリオの重複の両方が可能です。

1. 同じシナリオの複数のステップにわたる値の使用

質問の例を参照すると、Order_Idはステップの外部で定義できるため、すべてのステップからグローバル スコープでアクセスできます。コードを正しく理解していれば、次のようになります (おそらく不要なコードはコメントアウトされています)。

let Order_id;

Then("Get Data from page", () => {
  cy.get(".os-order-number").invoke("text").then(($Oid) => {
    let Order = $Oid.text();
    Order_id = Order.replace(/[^0-9]/g, "");
    // cy.wrap(Order_id).as("Orderinfo");
  });
});


Given("Go to Login", () => {
  cy.visit("https://dev.simplifyshopping.com/register/");
});

When("Paste variable here", () => {
  cy.wait(2000);
  // cy.wait("@Orderinfo")
  // cy.get("@Orderinfo")).then((Orderinfo) => {
  //  console.log(Orderinfo);
  //  cy.get("#id_email").type(Orderinfo);
  // });

  console.log(Order_id);
  cy.get("#id_email").type(Order_id);
});

2. シナリオ間での値の使用 (テスト間で状態を保持する)

さまざまなシナリオの実行で特定の値にアクセスできるようにするには、たとえば、helper.js次のコードを含むファイルを作成できます。

export const stateStore = {};

ステップ定義ファイル内で、 をインポートして、必要stateStoreに応じて値を入力できます。

import { Given, When } from 'cypress-cucumber-preprocessor/steps';
import { stateStore } from '../helpers';

// step used in first scenario
Given('some value is made available in scenario 1', () => {
  stateStore.someValue = 'this is a value';
});

// step used in second scenario
When('this value can be used in another step of scneario 2', () => {
  console.log(`Print some value: ${stateStore.someValue}`);
});
于 2022-02-13T16:14:54.373 に答える