我有一个包含未知值的表(我需要稍后登录),我想将其中一个用类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中为表提供值
我可以尝试的任何路径?
答案 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
)