Protractor 一个期望中的多个条件

Protractor 一个期望中的多个条件,protractor,Protractor,我想验证AssignedAllUsers列表的文本可以包含test1或test2,但不应该包含test3 我正在使用下面的代码,但不确定代码有什么问题,我遇到以下错误:AllAssignee.toContain不是一个函数 this.IncList = element.all(by.repeater("incident in $ctrl.allIncidents")); this.AssignedAllUsers = this.IncList.all(by.css('[aria-label

我想验证AssignedAllUsers列表的文本可以包含test1或test2,但不应该包含test3

我正在使用下面的代码,但不确定代码有什么问题,我遇到以下错误:
AllAssignee.toContain不是一个函数

 this.IncList = element.all(by.repeater("incident in $ctrl.allIncidents"));

 this.AssignedAllUsers = this.IncList.all(by.css('[aria-label="Change assignee to "]'));


AssignedAllUsers.getText().then(function(AllAssignee){
                        console.log("AllAssignee = "+AllAssignee);
                        expect((AllAssignee.toContain(Logindata.Username0)) || (AllAssignee.toContain(Logindata.Username1)) && (AllAssignee.not.toContain(Logindata.Username2)));
                    });

您的错误是语法问题
toContain
属于被测试的值之外,换句话说,在
expect
语句后面的第一组括号之外

你有这个:
expect((AllAssignee.toContain(loginda.Username0))
。您还有一组额外的括号,尽管我认为这并不重要

您需要关闭
AllAssignee
调用,它应该是:
expect(AllAssignee).toContain(loginda.Username0)

要回答您的另一个问题,实际上不需要在一个
expect
语句中完成。因为列表不应该包含test3,这是您的第一个断言:
expect(AllAssignee).not.toContain(test3);

至于您的其他期望值,如果您不知道将出现哪一个,只需创建一个数组,并将两个可能的值放入其中。然后您可以针对该数组断言包含test1或test2:

var myArray = ['test1', 'test2'];
expect(myArray).toContain(AllAssignee);

另请参阅此有关

如何修复代码问题的相关问题:
expect(AllAssignee).toContain('test1'| |'test2');

这是错误的,并且非常容易误导。该值只是简单地转换为'test2'@David实际上转换为
test1