我试图用"'来实现循环。用于向下滚动表格并加载动态数据的结构,直到某些文本显示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 等修复此错误并没有帮助我。如何重建此循环以进行滚动?
答案 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();
});
});