如何解决"Failed: Converting circular structure to JSON in Protractor Test "



我正在尝试从我们的网络应用程序中提取一些值并将这些值存储在 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');
    })
});

相关内容

最新更新