gpt4 book ai didi

javascript - Protractor 将元素内部文本写入文件

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

我正在尝试获取元素内部文本并将内部文本写入文件,但是我没有成功。程序运行并写入 csv 文件,但只写入全局变量等于的内容,而不是元素的内部文本,这就是我所做的:

带有全局变量的配置文件:

enter image description here

it('获取周期状态、付款日期、周数、客户 ID - 已完成', function () {

      //https://stackoverflow.com/questions/44362880/protractor-if-else-with-expectcondition
var cycle = $('#cycleStatusID');
browser.wait(EC.elementToBeClickable(cycle), 20000).then(function() {
cycle.getText().then(function(text){
if (['Cycle Complete',
'Entering Payroll Information',
'Correcting Input',
'UnderReview'].indexOf(text) >= 0) {
cycleStatus= text;
console.log(cycleStatus+ ' - Displayed');
} else {
cycleStatus= 'Cycle unknown';
console.log(cycleStatus);
}
});
});


var fs = require('fs');
fs.appendFile('/Users/hoflerj/Desktop/Protractor/WFN/psreport.csv',cycleStatus, function (err) {
if (err) throw err;
console.log('write complete!');
});


});//spec function

enter image description here

似乎它是在实际将信息存储在变量中之前写入的,它应该是输入工资单信息然后说写入完成。

<小时/>

问题是写入文件但将其放入所有一列中。

 const fs = require('fs');
const cycle = $('#cycleStatusID'); // cycle status
const client = $('#clientID'); // clientid
const writeValueToFile = (value) => {
return fs.appendFile('/Users/hoflerj/Desktop/Protractor/WFN/psreport.csv', value + ";" + "hellow world", function (err) {
if (err) throw err;
console.log('write complete!');
});
}

最佳答案

所以我认为您误解了 promise 和变量作用域的工作原理。

const fs = require('fs');

const cycle = $('#cycleStatusID');

const writeValueToFile = (value) => {
return fs.appendFile('/Users/hoflerj/Desktop/Protractor/WFN/psreport.csv', value, function (err) {
if (err) throw err;
console.log('write complete!');
});
}

const acceptableValues = ['Cycle Complete', 'Entering Payroll Information', 'Correcting Input', 'UnderReview'];

// Cleaned your code up
browser.wait(EC.elementToBeClickable(cycle), 20000)
.then(() => {
const cycleStatus;
cycle.getText()
.then((text) => {
if (acceptableValues.indexOf(text) >= 0) {
cycleStatus = text;
console.log(cycleStatus+ ' - Displayed');
} else {
cycleStatus = 'Cycle unknown';
console.log(cycleStatus);
}
})
.then(() => {
writeValueToFile(cycleStatus);
});
});

//Here it is cleaner but could be confusing for you since you don't fully understand promises yet.
browser.wait(EC.elementToBeClickable(cycle), 20000)
.then(() => {
return cycle.getText()
.then((text) => {
if (acceptableValues.indexOf(text) >= 0) {
return text;
} else {
return 'Cycle unknown';
}
})
.then(writeValueToFile);
});

编辑: promise :代码最初编写的方式是,您调用 browser.wait() 的代码,并且从未运行 then block 中的任何代码,执行 write 函数,然后运行 ​​then block 中的代码。这导致您的变量未定义。因为它是在运行写入函数后设置的。这是我第一次尝试理解 Promise 时使用的一篇很棒的文章 https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html

您也可能会遇到变量提升问题,但也许不会。我看到您正在 then block 内设置 CycleStatus 变量,但从未看到您定义它的位置。当您到达要写入文件的部分时,这可能会导致全局变量或该变量未定义,因为该变量从未在当前作用域中定义。 https://www.designingforscale.com/understanding-hoisting-in-javascript/

关于javascript - Protractor 将元素内部文本写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776765/

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