gpt4 book ai didi

selenium-webdriver - 使用 Protractor 从表中收集数据的最有效方法是什么?

转载 作者:行者123 更新时间:2023-12-02 03:24:17 25 4
gpt4 key购买 nike

使用 Protractor 从表格中收集数据的最有效方法是什么。

我收集了下面代码中显示的数据,10 行需要 20-30 秒。

buildStr 计数器用于为每一行创建一个对象,8 是列数。

    row = {};
gridRows = [];

element.all(by.css('#contenttableGrid div[role="gridcell"] div')).each(function(element){
element.getText().then(function(text){
row[headerName[buildStr]] = text;
buildStr++;

if(buildStr === 8){
buildStr = 0;
gridRows[rowCounter] = row;
rowCounter++;
row = {};
}
});
});

最佳答案

我看到的一种加快速度的方法是通过在页面上注入(inject)脚本来提取页面上的所有数据。这可以在 browser.executeScript() ( docs ) 的帮助下完成。在您的示例中, Protractor 必须在您每次调用 getText() 时向浏览器发出请求,它发出的调用次数 = 表格中的单元格数。但是使用 browser.executeScript() 它将进行一次调用并在浏览器中完成所有操作,这可能非常快。然后您可以简单地将此数据返回给测试规范并通过 Promises 使用它。

var headerName = {};
// I assume that this variable holds names for headers
// you can pass data from test spec to injected script as arguments (below)

// promise will be resolved with the value you return from `executeScript`
var promise = browser.executeScript(function (headerName) {

// all the stuff inside this function happens on your page under test
// it is not a Protractor environment

var buildStr = 0;
var rowCounter = 0;
var row = {};
var gridRows = [];

var cells = document.querySelectorAll('#contenttableGrid div[role="gridcell"] div');
for (var i = 0, l = cells.length; i < l; i++) {
var text = cells[i].textContent;

// `headerName` object is passed as an argument from test spec
row[headerName[buildStr]] = text;
buildStr++;

if (buildStr === 8) {
buildStr = 0;
gridRows[rowCounter] = row;
rowCounter++;
row = {};
}
}

// return all collected data back to test spec
return gridRows;

}, headerName); // pass helper object from test spec to injectable function

promise.then(function (gridData) {

console.log(gridData); // result of computations

});

请务必阅读 docs对于 browser.executeScript() 如果你想用它,因为它有很多特定的时刻。

关于selenium-webdriver - 使用 Protractor 从表中收集数据的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com