量角器循环:直到出现文本字段中的某些文本

时间:2017-09-05 10:05:49

标签: javascript protractor

我试图用"'来实现循环。用于向下滚动表格并加载动态数据的结构,直到某些文本显示N个项目中的" n  (滚动查看更多内容)"更改文本,如显示N个项目中的N和#34;在标签元素中。新数据由滚动到表格底部的30行的块加载。我试图实现一个循环:

var Needed_text = 'needed_text';
var rows = element.all(by.xpath('table'));
var text = element(by.xpath('element').getText();
while(expect((text).not.toEqual(Needed_text)){
        last_row = rows.last();
        row_count_number = rows.count(rows);
        browser.actions().mouseMove(last_row).perform();
        browser.sleep(3000);
        text = element(by.xpath('element').getText();
});

一直以来,当我试图意识到这样的事情时,我面临着错误:

  

致命错误:CALL_AND_RETRY_LAST分配失败 - JavaScript堆   内存不足

尝试通过更改参数 max_old_space 等修复此错误并没有帮助我。如何重建此循环以进行滚动?

2 个答案:

答案 0 :(得分:0)

首先,你需要声明一个布尔变量,一旦你得到所需的标签就会改变它。然后,您在while循环中查找该元素,但为了检查所需的文本,您必须解决该承诺。像这样:

var bool = true;
while (bool) {
    element(by.xpath('element').getText().then(function(resolvedText){
    if (resolvedText == NeededText){
        do all you need here;
        bool = false;
        }
    })
}

答案 1 :(得分:0)

如果您的逻辑正确,则代码应该可以正常工作。 getText()方法返回一个promise,需要解析它。

element(by.xpath('element').getText().then(function(text){
while(expect((text).not.toEqual(Needed_text)){
        last_row = rows.last();
        row_count_number = rows.count(rows);
        browser.actions().mouseMove(last_row).perform();
        browser.sleep(3000);
        text = element(by.xpath('element').getText();
});
});