javascript - 柏。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();
});
});
解决方案
您应该找出哪个元素具有文本“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();
})
推荐阅读
- javascript - 尝试替换输入值导致 TypeError: input.replace is not a function
- c# - 在 ViewModel 构造函数和导航中添加 Api 接口停止工作 Prism
- angular - 如何为 Angular 6 创建应用程序设置文件?
- node.js - ffmpeg - ffmpeg aws lamnda 函数错误
- git - 如何限制 BitBucket 上拉取请求作者的合并权限
- android - Android Studio 3.2.1:minSdk(API 23) > deviceSdk(API 22) Wear OS
- r - 当值平坦时如何对向量进行排序并打印 Top X 值?
- python - AWS lambda 删除默认 VPC
- java - 在接口中调用私有方法
- java - 升级到Spring boot 2.1.0 Data Jpa + Batch,遇到ORA-00942