2016-07-04 76 views
1

量角器必须验证错误消息是否存在于页面中。所以错误信息可以在“alert-message”类或“fail-heading”类中。在页面显示后如何查找元素是否存在

如果我喜欢下面,它只有在显示alert-message className时才会成功。但有时候我把className当作“失败标题”。

var waitforele_confirmation = by.className('alert-message'); 
browser.wait(function(){return browser.driver.isElementPresent(waitforele_confirmation)}, 60000); 
expect(browser.driver.isElementPresent(waitforele_confirmation)).toBeTruthy(); 

所以我想动态检查页面加载后存在哪个元素。另外我想在等待每个元素时使用browser.wait函数。我只是做了下面的伪代码来理解。

while (i<120 and !found) 
{ 
    int i=0; 
    if (element(by.className('alert-message')).isPresent()) 
    { 
    found = true; 
    } 
    else if (element(by.className('fail-heading')).isPresent()) 
    { 
    found = true; 
    } 
    else 
    { 
    browser.sleep(500); 
    } 
    i++; 
} 

有人可以转换量角器pls中的伪代码吗?

回答

1
let EC = protractor.ExpectedConditions; 
let alertMessageVisibility = EC.visibilityOf($('.alert-message')); 
let failHeadingVisibility = EC.visibilityOf($('.fail-heading')); 

browser.wait(EC.or(alertMessageVisibility, failHeadingVisibility), 60000, "Alert message or fail heading should become visible in 60 seconds, but it wasn't") 
+0

工作完美。谢谢。 –

0

下面的代码将作为你的预期:

var EC = protractor.ExpectedConditions; 
var alertMessageElement = element(by.className('alert-message')) 
var failHeadingElement = element(by.className('fail-heading')) 

/*browser.wait() will be keep on checking for error messages until either 
any one of the error message found or specified timeout limit reached*/ 

browser.wait(function(){ 
EC.visibilityOf(alertMessageElement).call().then(function(isAlertMessagePres 
ent){ 
    if(isAlertMessagePresnt){ 
    return true; 
    } 
}) 

EC.visibilityOf(failHeadingElement).call().then(function(isFailedHeadingPresent) { 
if(isFailedHeadingPresent){ 
    return true; 
} 
}) 
    },10000,'No error message found within specified timeout of 10 seconds  
     '); 
+0

感谢分享。我得到这段代码的语法错误。我是量角器的新手,所以无法解决语法问题。但是下面的答案(xotabu4)运行良好。 E /发射器 - 错误:C:\量角器\ POC \ testcases_n_spec.js:97 回报,如果(isPresent()){返回true;} ^^ 语法错误:意外的令牌,如果 –

+0

删除返回旁边的if语句。现在就试试它,如果你想为你的问题选择其他选项。谢谢 –

+0

我再次尝试,它不工作。获取下面的错误。失败:isPresent未定义。我试图给予isPresent(),但它仍然是一样的错误。无论如何,这个问题已解决。我们可以解决这个问题。 –