If else 条件在赛普拉斯

If else condition in Cypress

.grid > languagefield 是 UI 下拉列表的元素

取决于在此语言字段中选择的语言,它会做一些事情

这是我的,但 Cypress 没有达到 if 条件,if (Lang == 'American English')

不对
const Date = Cypress.moment().add(-3, 'days').format('YYYY-MM-DD');
const DateUS = Cypress.moment(Date).format('MM/DD');
const DateUK = Cypress.moment(Date).format('DD/MM');
const Lang = '.grid > languagefield'
    
        if (Lang == 'American English') {
          //should get DateUS format  
        } else {
          //should get DateUK format 
         }

非常感谢!

cy.get('.grid > :nth-child(7)').invoke('text').then((txt) => { cy.log(txt) })的结果

更多信息

你可以这样写:

cy.get('.grid > languagefield').invoke('text').then((txt) => {
  if (txt.trim() == 'American English') {
    //Do Something
  } else {
    //Do Something 
  }
})

或者,如果你想使用 each() 循环遍历下拉列表的元素,然后找到文本并执行一些操作,你可以这样做:

cy.get('selctor').each(($el) => {
  if ($el.text().trim() == 'American English') {
    //Do Something
  } else {
    //Do Something 
  }
})

如果个人资料部分可见,这将为您提供下拉菜单的文本,

const language = Cypress.$('div[name="language"]')  // parent div for language selector
  .children().first()                               // first child is selected text 
  .text()

console.log(language);     // American English

赛普拉斯别名的等价物

const languageDateFormats = {
  'American English': DateUS,
  'British English': DateUK,
  // other langauges
}

cy.visit('/profile');
cy.get('div[name="language"]')  // parent div for language selector
  .children().first()           // first child is selected text 
  .invoke('text')
  .as('language')

cy.visit('/timeline');
cy.get('@language').then(language => {
  const dateFormat = languageDateFormats[language];
  // test the timeline date format
})