如何在Protractor中比较两个窗口之间两个元素的值?

时间:2015-12-02 16:22:05

标签: javascript angularjs variables jasmine protractor

我需要保存“$$('[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的窗口值。

2 个答案:

答案 0 :(得分:1)

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

  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);
    });
    
  4. 希望它有所帮助。

答案 1 :(得分:0)

我认为你需要通过承诺传递它。

import datetime

time_str = datetime.datetime.now().strftime("%Y%m%dT%H%M%S")
file_name_format = '/home/user/Desktop/DVH/dvh-%s_%s.txt'
file_name = file_name_format%(name.replace("/","-"), time_str)
np.savetxt(file_name, dvh1, delimiter=',')