从操纵up的函数调用时,使用Xpath的单击不起作用

时间:2019-12-16 14:04:07

标签: typescript puppeteer jest-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);

2 个答案:

答案 0 :(得分:0)

正如我在上面的代码中看到的那样,您在变量名const QuestionLableXpath中打了一个错字。然后,您使用了正确的名称QuestionLabelXpath,因此它们不匹配。尝试固定名称,然后查看结果。

答案 1 :(得分:0)

尝试像这样在函数调用中等待。

const CommFun = require('./commonfunction');
    test('Verify "question"',async() => {
    await CommFun.ToggleButton("question","//div[@role=\'tabpanel\']/div/div/div/div/div")
    },30000);