javascript “Error:Node is either not clickable or not an HTMLElement”当我试图通过名称获取输入时,Puppeteer

zkure5ic  于 2023-05-05  发布在  Java
关注(0)|答案(2)|浏览(819)

这是我的HTML结构:

<div id="divImporte">
  <p class="btn01">
    <input type="button" name="Enviar Tasas" value="Enviar Tasas">
  </p>
</div>

这是我尝试选择输入的方式:
第一种方式:

const buttonTasas = await page.$$("input[type='button'][value='Enviar Tasas']");

第二种方式:

const buttonTasas = await page.waitForSelector("input[type='button'][value='Enviar Tasas']");

然后单击它:

if (buttonTasas && buttonTasas.length > 0) {
  await buttonTasas[0].click();
}

我得到了这个错误:

"Error: Node is either not clickable or not an HTMLElement"

我该如何解决?谢谢

cnh2zyt3

cnh2zyt31#

有时候puppeteer由于某种原因无法单击,所以在仔细检查buttonTasas不为null并尝试在调用click()方法之前添加一些延迟之后,您可以尝试以下解决方法直接在页面中调用click函数:
使用page.evaluatehttps://pptr.dev/api/puppeteer.page.evaluate):

page.evaluate((btnSelector) => {
    // this executes in the page
    document.querySelector(btnSelector).click();
}, "input[type='button'][value='Enviar Tasas']");

或者你可以直接使用这个元素:

page.evaluate((btn) => {
    // this executes in the page
    btn.click();
}, buttonTasas);

使用page.$evalhttps://pptr.dev/api/puppeteer.page._eval):

await page.$eval(
  'input[type='button'][value='Enviar Tasas']',
  (el) => {
    el.click()
  }
);
kq0g1dla

kq0g1dla2#

浏览器的UI工具通常有白色的问题。尝试使用不带空格或新行的表达式搜索元素。您可以在CSS表达式中使用*=查找字符串中的单词:

await page.$$("input[type='button'][value*='Enviar']");

await page.$$("input[type='button'][value*='Enviar'][value*='Tasas']");

相关问题