我正在尝试从量角器中相当大的HTML表中读取值(大约一千行和5列)。Protractor的element.all().getText()方法在这方面非常慢,所以我决定使用browser.executeScript实现一个解决方案来直接读取值,例如:
async getTextFromHtmlTable(){
try{
var rows = element.all(by.css('table[id^="P"] tr'));
var numRows = await rows.count();
var arrRows = [];
for (var i = 2; i <= numRows; i++){
console.log("********Processing row: " + i);
var css = 'table[id^=\"P\"] tr:nth-child(' + i + ') td div div';
//**Slow solution: var arrRowsText = await element.all(by.css(css)).getText();
//Faster:
var arrRowsText = await browser.executeScript("return document.querySelectorAll('" + css + "')").then(function(elements){
var arrayRes = [];
for (var j=0; j<elements.length; j++){
console.log("****** Element text: " + elements[j].textContent);
arrayRes.push(elements[j].textContent);
}
return arrayRes;
});
arrRows.push(arrRowsText.join(';').replace(/;\s/gm, ";"));
}
return arrRows;
}catch(err){
console.log ('Some error: ' + err)
};
}
但是,执行测试时的控制台输出为:
处理行:569
****** 元素文本:未定义的
****** 元素文本:未
定义的 ****** 元素文本:未定义的
****** 元素文本:未定义的
****** 元素文本:未定义的
******** 处理行:570
****** 元素文本:未定义的
****** 元素文本:未定义的
****** 元素文本:未定义的
****** 元素文本:未定义的
****** 元素文本:未定义的 ****** 元素文本:未定义的 ****** 元素文本:未定义的 ****** 元素文本:未定义的
无论我阅读什么属性(textContent,innerText,innerHTML...),它总是返回“undefined”。我做错了什么吗?感谢您的帮助!
噜噜哒
犯罪嫌疑人X
相关分类