如何比较量角器中两个窗口之间两个元素的值?

问题描述:

我需要保存“$$('[title =”Ir al documento“]')。first()。getText();”用于在另一个窗口中比较。如何比较量角器中两个窗口之间两个元素的值?

it('spec', function() { 

    var text; 

    $$('#links-list a').first().click().then(function() { 
      browser.driver.getAllWindowHandles().then(function (handles) { 
       browser.driver.switchTo().window(handles[1]).then(function() { 

        browser.wait(EC.visibilityOf($('#introBienvenida .boton')), 5000); 
        $('#introBienvenida .boton').click(); 

        element(by.id("texto")).sendKeys('texto refundido'); 
        element(by.id("buttonSearch")).click(); 

        text = $$('[title="Ir al documento"]').first().getText(); // I need save to compare this value. 
        $$('[title="Ir al documento"]').first().click(); 

       }); 
       browser.driver.close(); 
       browser.driver.switchTo().window(handles[0]); // Back again. 
      }); 
     }); 

     expect($('#adDoc0 .AD-objetivo').getText()).toEqual(text); // I need assert the content of text 

}); 

编辑:

我需要的是元素的值与手柄1和元素的窗口带手柄0

首先值我在元点击比较窗口窗口与句柄0,然后我单击窗口中的文档与句柄1,我得到一个值后,我必须回到窗口与句柄0得到一个值,并与窗口的值与手柄1的值进行比较。

量角器是根据承诺和回调的原则而开发的。 getText()函数返回带有文本值的承诺。有很多方法可以处理这种情况,

  1. 期望它在getText()函数的承诺内。 (这个已经发布为@ user2020347的答案)。
  2. 保存它使用全局变量,然后使用它,你需要的功能之外 -

    var text; 
    $$('#links-list a').first().click().then(function() { 
        //switch to window 1 
        $$('[title="Ir al documento"]').first().getText().then(function(windowOneText){ 
         text = windowOneText; 
        }); 
        //close the windows to go back to first window 
    }); 
    expect($('#adDoc0 .AD-objetivo').getText()).toEqual(text); 
    
  3. 它传递到下一个回调函数作为参数 -

    var text; 
    $$('#links-list a').first().click().then(function() { 
        //switch to window 1 
        $$('[title="Ir al documento"]').first().getText().then(function(windowOneText){ 
         text = windowOneText; 
        }); 
        //close the windows to go back to first window 
        return text; 
    }).then(function(argText){ 
        expect($('#adDoc0 .AD-objetivo').getText()).toEqual(argText); 
    }); 
    

希望能帮助到你。

+0

解决了选择2.我忘了getText()返回promise。谢谢! – winlinuz

我认为你需要通过一个亲濑。

$$('[title="Ir al documento"]').first().getText().then(function(documentTitleText){ 
    browser.driver.switchTo().window(handles[0]); 
    expect($('#adDoc0 .AD-objetivo').getText()).toEqual(documentTitleText); 
}); 
+0

我需要的是将窗口中Element的值与句柄1进行比较,以及窗口句柄为0的Element的值。 – winlinuz