Javascript 无法在Puppeter jest测试框架中解析本地JSON数据?

Javascript 无法在Puppeter jest测试框架中解析本地JSON数据?,javascript,json,jestjs,puppeteer,Javascript,Json,Jestjs,Puppeteer,我需要使用Jest+Puppeter测试产品。我从前端将定位器定位在页面对象所在的不同位置,需要将JSON导入页面对象。但当我尝试使用JSON.parse()解析时,我收到: SyntaxError:意外标记 所有人都研究了堆栈溢出中的所有问题,但没有任何帮助 页面对象: import { waitForNavigation, click, type, pressEnter} from './base'; import { listsPageLocators } from '../constan

我需要使用Jest+Puppeter测试产品。我从前端将定位器定位在页面对象所在的不同位置,需要将JSON导入页面对象。但当我尝试使用
JSON.parse()
解析时,我收到:

SyntaxError:意外标记

所有人都研究了堆栈溢出中的所有问题,但没有任何帮助

页面对象:

import { waitForNavigation, click, type, pressEnter} from './base';
import { listsPageLocators } from '../constants/locators/listPage.json';

async function clickSearchByCompanyName(page){
    click(page, listsPageLocators.searchByCompanyNameBtn);
    waitForNavigation(page);
}
JSON:

具有单击方法的基本页对象:

async function click(page, JsonObject, text) {
    console.log(JsonObject);
    const locatorData = JSON.parse(JsonObject);
    if (typeof text !== 'undefined') {
        const el = await selectContains(page).getElement(`${locatorData.locator}:contains(${text})`);
        el.click();
        console.log(`Click on ${locatorData.name} which contains ${text}`);
    } else {
        await page.click(locatorData.locator);
        console.log(`Click on ${locatorData.name}`);
    }
}
错误:

● 单个公司页面测试:›C297679-从列表中打开公司页面

SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)

  54 | async function click(page, JsonObject, text) {
  55 |     console.log(JsonObject);
> 56 |     const locatorData = JSON.parse(JsonObject);
     |                              ^
  57 |     if (typeof text !== 'undefined') {
  58 |         const el = await selectContains(page).getElement(`${locatorData.locator}:contains(${text})`);
  59 |         el.click();

  at parse (pages/base.js:56:30)
  at Object.clickViewList (pages/add-company-by-name-popup.js:29:5)
  at Object.clickViewList (company-page-e2e.js:29:35)
SyntaxError:JSON中位置1处的意外标记o
在JSON.parse()处
54 |异步函数单击(页面、JsonObject、文本){
55 | console.log(JsonObject);
>56 | const locatorData=JSON.parse(JsonObject);
|                              ^
57 |如果(文本类型!=“未定义”){
58 | const el=wait selectContains(page).getElement(`${locatorData.locator}:contains(${text})`);
59 | el.click();
解析时(pages/base.js:56:30)
在Object.clickViewList(页面/按名称添加公司弹出窗口。js:29:5)
在Object.clickview列表(company-page-e2e.js:29:35)

我希望可以从不同的JSON导入定位器并在页面对象中实现它。但实际上,我收到了一个错误。

看来
JsonObject
不是JSON格式的字符串,而是一个成熟的JavaScript对象。无需解析,只需直接分配它即可

更改此项:

const locatorData = JSON.parse(JsonObject);
为此:

const locatorData = JsonObject;

错误告诉我您拥有的JSON不是它试图解析的JSON。您能否调试并检查
JsonObject
的值到底是多少。我将其作为JsonObject参数{locator:'li.company-name>a',name:'Search By company name Button'}接收到嗯,我在想,
JsonObject
已经是一个对象,而不是一个JSON格式的字符串,并且被强制为一个字符串,并给出
[object object]
因此,JSON中的
意外标记o位于位置1
,我如何从中获取定位器值?或者我可以简化这个
[object object]
转换为JSON?不要尝试解析它:
const locatorData=JsonObject;
。它已经被解析,正在工作。感谢您的帮助和解释!
const locatorData = JsonObject;