1. ホーム
  2. javascript

[解決済み] Cypress.ioを使用して要素が存在するかどうかを確認する方法

2022-02-05 06:44:57

質問

要素が存在するかどうかを確認し、要素が存在する場合に特定のステップを実行できるようにする方法。また、要素が存在しない場合は、特定の異なるステップを実行することができます。

以下のようなことをやってみましたが、うまくいきませんでした。

Cypress.Commands.add('deleteSometheingFunction', () => {
  cy.get('body').then($body => {
    if ($body.find(selectors.ruleCard).length) {
      let count = 0;
      cy.get(selectors.ruleCard)
        .each(() => count++)
        .then(() => {
          while (count-- > 0) {
            cy.get('body')
            // ...
            // ...
          }
        });
    }
  });
  });

簡単なjavascriptで組み込むことができる、シンプルなソリューションを探しています。 さもなくば ブロックまたは then() 約束のセクション

Webdriverプロトコルの以下の実装と似たようなもの。

  1. driver.findElements(By.yourLocator).size() > 0
  2. 待機中の要素が存在するか確認する

ご教授ください。ありがとうございます。

解決方法は?

cypressはすべてのステップが非同期なので、コマンドファイルやページオブジェクトファイルで共通の関数を作成する必要があります。

    export function checkIfEleExists(ele){
    return new Promise((resolve,reject)=>{
        /// here if  ele exists or not
        cy.get('body').find( ele ).its('length').then(res=>{
            if(res > 0){
                //// do task that you want to perform
                cy.get(ele).select('100').wait(2000);
                resolve();
            }else{
                reject();
            }
        });
    })
}


// here check if select[aria-label="rows per page"] exists
cy.checkIfEleExists('select[aria-label="rows per page"]')
.then(e=>{
        //// now do what if that element is in ,,..
        })
.catch(e=>{
    ////// if not exists...
    })