我正在尝试从我们的网络应用程序中提取一些值并将这些值存储在 JSON 文件中。下面是我的代码。
当我运行脚本时,出现错误"失败:将循环结构转换为 JSON"。但是我没有在这个脚本上找到任何循环引用。变量是独立的,或者在我看来是这样的。
require('..\waitAbsent.js');
require("../node_modules/jasmine-expect/index.js");
var EC = protractor.ExpectedConditions;
var G = globalVariables;
var util = require('util')
var fs = require('fs');
let StudentData = 'StudentData.json';
describe('Test for Json Data', function (){
beforeAll(function () {
browser.driver.manage().window().maximize();
browser.get(G.loginMain);
});
it('test for Json file creation', function(){
var SubmitButton = $('#submitButton').getAttribute('id').then(function(SB){
return(SB)
});
var UserName = $('#username').getAttribute('id').then(function(UN){
return UN;
});
let Data = {
a: UserName,
b: SubmitButton,
};
let DT = JSON.stringify(Data);
fs.writeFileSync(StudentData ,DT);
});
it('test for Submit', function(){
let Uploaded_data = fs.readFileSync(StudentData);
let Data = JSON.parse(Uploaded_data);
let c = Data['Submit'];
console.log(c);
expect(c).toBe('submitButton');
})
});
我怎样才能克服这个问题?这个脚本中真的有任何循环引用吗?
在update-json-file的帮助下,我可以解决这个问题。现在我在 Json 文件中分别写入每个值,不知何故它没有显示循环引用错误。
我更新的代码如下:
require('..\waitAbsent.js');
require("../node_modules/jasmine-expect/index.js");
var EC = protractor.ExpectedConditions;
var G = globalVariables;
var util = require('util')
const updateJsonFile = require('update-json-file')
var fs = require('fs');
let StudentData = 'StudentData.json';
describe('Test for Json Data', function (){
beforeAll(function () {
browser.driver.manage().window().maximize();
browser.get(G.loginMain);
});
it('test for Json file creation', function(){
var SubmitButton = $('#submitButton').getAttribute('id').then(function(SB){
let Data = { SubmitButton : SB };
let DT = JSON.stringify(Data);
fs.writeFileSync(StudentData ,DT);
return(SB)
});
var UserName = $('#username').getAttribute('id').then(function(UN){
updateJsonFile(StudentData, (data) => {
data.UserName = UN
return data
})
;
return UN;
});
});
it('test for b', function(){
let Uploaded_data = fs.readFileSync(StudentData);
let Data = JSON.parse(Uploaded_data);
let c = Data['SubmitButton'];
console.log(c);
expect(c).toBe('submitButton');
})
});