使用量角器将HTML中的文本作为变量传递

时间:2018-01-04 13:01:59

标签: jasmine protractor

我有一个包含未知值的表(我需要稍后登录),我想将其中一个用类currentWeek保存到变量中。 HTML如下:

<tr _ngcontent-c21="" class="currentWeek">
    <th _ngcontent-c21="" class="text-center">Value1Foo</th>
    (...)
</tr>

我在Helper.ts中创建了proctracor:

static getfooOfTheWeek() {
    let child = element(by.css('.currentWeek')).$('.text-center');

    describe('Get foo', function () {
        it('get foo', function () {
            browser.driver.get('tablepage');
            browser.sleep(3000);
            return ((child).getText()).toString();
        })
    })
}

并在文件maintest.ts中:

describe('Get FOO', function () {
    var FOO=Helper.getfooOfTheWeek();
    browser.sleep(2000);
    //use the value set in Helper.getfooOfTheWeek();
    NegativeTest.SomeTest(FOO);
});

但它通常与- Failed: each key must be a number of string; got undefined失败 - 因此我认为FOO保存为对象,而不是字符串。

我还想过使用JSON(使用JSON.parse()),但开发人员无法从JSON中为表提供值

我可以尝试的任何路径?

1 个答案:

答案 0 :(得分:0)

知道了 - 发现这个关于保存为字符串而不是对象的问题:Protractor: element.getText() returns an object and not String我需要解决这个问题

而不是将其作为var FOO=Helper.getfooOfTheWeek();变量传递,而是将其保存为browser.params.Foo

static getfooOfTheWeek() {
    let child = element(by.css('.currentWeek')).$('.text-center');

    browser.driver.get('tablepage');
    browser.sleep(3000);
    child.getText().then(function(text) {
        browser.params.Foo=text;
    });
}

我可以运行NegativeTest.SomeTest();,其中变量在SomeTest()中作为browser.params.Foo传递(而不是在那里写FOO