从 puppeteer 中的函数调用时,使用 Xpath 单击不起作用
Click using Xpath is not working when called from a function in puppeteer
尝试使用 $x 单击元素但抛出错误。
尝试了不同的方法但没有运气,任何人都可以让我知道下面的代码有什么错误或
使用 xpath 的任何其他点击方式。
Error: Protocol error (Runtime.callFunctionOn): Target closed.
下面是代码
//commonfunction.ts
module.exports = {};
module.exports.ToggleButton = async function ToggleButton(Question, QuestionLabelXpath) {
await page.waitForXPath(QuestionLabelXpath + "/descendant::label[text()='" + Question + "']/parent::div/descendant::button[@title='Edit']");
const editIcon = await page.$x(QuestionLabelXpath + "/descendant::label[text()='" + Question + "']/parent::div/descendant::button[@title='Edit']");
await editIcon[0].click();};
//questions.ts
const CommFun = require('./commonfunction');
test('Verify "question"',async() => {
CommFun.ToggleButton("question","//div[@role=\'tabpanel\']/div/div/div/div/div")
},30000);
在测试中尝试了 $$eval,点击可以正常工作,但是当我将它放入函数中时它不起作用,它是否与函数调用有任何关系?
const CommFun = require('./commonfunction');
test('Verify "question"',async() => {
await page.$$eval('button[title=\'Edit\']', elements => elements[1].click());
},30000);
正如我在上面的代码中看到的那样,您在变量名 const QuestionLableXpath
中输入了错误。然后您使用了正确的名称 QuestionLabelXpath
,因此它们不匹配。尝试修改名称并查看结果。
尝试把await放在函数调用中,像这样
const CommFun = require('./commonfunction');
test('Verify "question"',async() => {
await CommFun.ToggleButton("question","//div[@role=\'tabpanel\']/div/div/div/div/div")
},30000);
尝试使用 $x 单击元素但抛出错误。 尝试了不同的方法但没有运气,任何人都可以让我知道下面的代码有什么错误或 使用 xpath 的任何其他点击方式。
Error: Protocol error (Runtime.callFunctionOn): Target closed.
下面是代码
//commonfunction.ts
module.exports = {};
module.exports.ToggleButton = async function ToggleButton(Question, QuestionLabelXpath) {
await page.waitForXPath(QuestionLabelXpath + "/descendant::label[text()='" + Question + "']/parent::div/descendant::button[@title='Edit']");
const editIcon = await page.$x(QuestionLabelXpath + "/descendant::label[text()='" + Question + "']/parent::div/descendant::button[@title='Edit']");
await editIcon[0].click();};
//questions.ts
const CommFun = require('./commonfunction');
test('Verify "question"',async() => {
CommFun.ToggleButton("question","//div[@role=\'tabpanel\']/div/div/div/div/div")
},30000);
在测试中尝试了 $$eval,点击可以正常工作,但是当我将它放入函数中时它不起作用,它是否与函数调用有任何关系?
const CommFun = require('./commonfunction');
test('Verify "question"',async() => {
await page.$$eval('button[title=\'Edit\']', elements => elements[1].click());
},30000);
正如我在上面的代码中看到的那样,您在变量名 const QuestionLableXpath
中输入了错误。然后您使用了正确的名称 QuestionLabelXpath
,因此它们不匹配。尝试修改名称并查看结果。
尝试把await放在函数调用中,像这样
const CommFun = require('./commonfunction');
test('Verify "question"',async() => {
await CommFun.ToggleButton("question","//div[@role=\'tabpanel\']/div/div/div/div/div")
},30000);