Javascript 无法在Puppeter jest测试框架中解析本地JSON数据?
我需要使用Jest+Puppeter测试产品。我从前端将定位器定位在页面对象所在的不同位置,需要将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
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;