如果不相等,如何创建xOR量角器ExpectedCondition打字稿以等待元素通过

时间:2019-07-04 15:30:21

标签: angular typescript jasmine protractor webautomation

我想创建一个预期的条件,如果两个文本相似,则将失败,如果两个文本都不相似,则将通过。类似于xOR逻辑。我的代码在下面,但是有错误,如果您能帮助我,将不胜感激。谢谢

https://www.protractortest.org/#/api?view=ProtractorExpectedConditions

enter image description here enter image description here

const EC = protractor.ExpectedConditions;
const TextInfo1 = element(by.id('Text1'));
const TextInfo2 = element(by.id('Text2'));
console.log('Text1:', await TextInfo1.getText());
console.log('Text2:', await TextInfo2.getText());
await browser.wait(EC.or(EC.and(TextInfo1, EC.not(TextInfo2)),EC.and(EC.not(TextInfo1), TextInfo2)), 15000);

在代码的最后一行,我在TextInfo1和TextInfo2上遇到此错误。

Argument of type 'ElementFinder' is not assignable to parameter of type 
'Function'.
  Type 'ElementFinder' is missing the following properties from type 
'Function': apply, call, bind, prototype, and 5 more.ts(2345)

1 个答案:

答案 0 :(得分:0)

实际上ExpectedCondition无法解决您的问题。更直接的方法是将一个函数定义为browser.wait()的条件,如下所示:

const TextInfo1 = element(by.id('Text1'));
const TextInfo2 = element(by.id('Text2'));

await browser.wait(async function(){
    txt1 = await TextInfo1.getText();
    txt2 = await TextInfo1.getText();
    return txt1 !== txt2;
}, 15000)

注意:如果您使用getText(),请不要在wait()之外拨打await,我们希望wait()提取两者的文本在超时15 seconds内以间隔间隔多次。