更新/编辑:我有一个包含名字、姓氏和电子邮件的夹具文件,它遍历 beforeeach()
并将它们输入到相应的字段中。我想要做的验证是让我们说输入了错误的电子邮件,没有'@','.com'或仅存在'@'或仅存在'.com',当验证该字段时,这些应该失败。
const availablefixtures = [
{
"name": "data3",
"context": "1"
},
{
"name": "data2",
"context": "2"
}
]
夹具文件中的数据是:
{
"firstname": "Lambda",
"lastname": "Jonas",
"email": "ljonas@example.com"
}
describe('demoniftyhappysuite', function () {
//loop through both the fixtues
availablefixtures.forEach((afixture) => {
describe(afixture.context, () => {
enter code here
cy.fixture(afixture.name).then(function (data) {
this.data = data;
})
目前我正在从装置中的数据文件中读取电子邮件 value
it('demoniftyhappytest', {}, function () {
cy.get('input[name="personal.email"]').type(this.data.email, {
log: false
}).invoke('val').should('not.be.empty')
来自:https://stackoverflow.com/questions/62953993/how-can-i-check-email-validation-in-cypress 最好的方法是将一组电子邮件放在一个数组中。 (可能在 JSON 中)并遍历它们并检查电子邮件的有效性。
例如:
{
"Email_1":"['robot@mail.com','valid']",
"Email_2":"['robotmail.com','InValid']",
}
第二种解决方案:示例 为 email validation 尝试以下代码。
<script type = "text/javascript">
<!--
function validateEmail() {
var emailID = document.myForm.EMail.value;
atpos = emailID.indexOf("@");
dotpos = emailID.lastIndexOf(".");
if (atpos < 1 || ( dotpos - atpos < 2 )) {
alert("Please enter correct email ID")
document.myForm.EMail.focus() ;
return false;
}
return( true );
}
//-->
</script>
我希望它是简单的,即使它暂时在输入的电子邮件中验证@symbol 和 .com。
回答1
您可以使用 .forEach()
遍历电子邮件数组并以这种方式确定行为。由于您当前已经构建了电子邮件 json,我们需要从 Object.values()
获取数组。
const emails = {
"Email_1": ['robot@mail.com','valid'],
"Email_2": ['robotmail.com','InValid'],
}
describe('tests', () => {
it('validates the emails', () => {
Object.values(emails).forEach((value) => {
if (value[1] === 'valid') {
// code to run if valid -- reference email address as `value[0]`
} else if (value[1] === 'InValid') {
// code to run if invalid -- reference email address as `value[0]
}
});
});
});
如果您想将对象更改为数组数组,则如下所示:
const emails = [ ['foo@gmail.com', 'valid'], ['foogmail.com', 'InValid'] ];
...
emails.forEach((email) => {
if (email[1] === 'valid') {
...
} else if (email[1] === 'InValid') {
...
}
// reference email value as `email[0]`
})
或者如果你想让它成为一个对象数组
const emails = [ { email: 'foo@gmail.com', isValid: true }, { email: 'foogmail.com', isValid: false } ];
emails.forEach((value) => {
if (value.isValid) {
...
} else {
...
}
})
// email address is referenced by `value.email`