首页 > 解决方案 > 柏。If else 施工

问题描述

在此处输入图像描述

在此处输入图像描述

你好。我尝试编写我的第一个 Cypress 测试,我尝试使用 if/else 构造。出了点问题。请帮我。

it('Step 3 - Choose language in the dropdown, available languages EN, CZ, SK, DE ', () => {
    cy.getByTestId('dropdown-languages').click();
    cy.getByTestId('dropdown-languages-option-en-GB').should('exist');
    cy.getByTestId('dropdown-languages-option-cs-CZ').should('exist');
    //cy.getByTestId('dropdown-languages-option-sk-SK').should('exist');
    //cy.getByTestId('dropdown-languages-option-de-DE').should('exist');

    if( {
        cy.contains("Language").then(() => {
            cy.getByTestId('dropdown-languages-option-cs-CZ').click();
        });
        } else {
            cy.contains("Jazyk").then(() => {
                cy.getByTestId('dropdown-languages-option-en-GB').click();
            });
        });

标签: javascriptcypress

解决方案


您应该找出哪个元素具有文本“Language”或“Jazyk”,例如

cy.get('#language-prompt')   // element with id "language-prompt", for example
  .invoke('text')
  .then(prompt => {

    const option = (prompt === 'Language') 
      ? 'dropdown-languages-option-cs-CZ'
      : 'dropdown-languages-option-en-GB';

    cy.getByTestId('dropdown-languages').click()
    cy.getByTestId(option).click();
  })

如果在不测试文本的情况下无法确定哪个元素或如何选择它,请使用 jQuery OR 表达式,

cy.get(':contains("Language"), :contains("Jazyk")')   // "," separator means OR
  .invoke('text')
  .then(prompt => {

    const option = (prompt === 'Language') 
      ? 'dropdown-languages-option-cs-CZ'
      : 'dropdown-languages-option-en-GB';

    cy.getByTestId('dropdown-languages').click()
    cy.getByTestId(option).click();
  })

这假设您不能同时拥有两个单词。


另一种方法是查询下拉控件的值。如果下拉列表基于一个<input>元素

cy.getByTestId('dropdown-languages')
  .invoke('val')                      // text displayed in the dropdown
  .then(currentSelection => {

    const option = (currentSelection === 'English') 
      ? 'dropdown-languages-option-cs-CZ'
      : 'dropdown-languages-option-en-GB';

    cy.getByTestId('dropdown-languages').click()
    cy.getByTestId(option).click();
  })

推荐阅读