首页 > 解决方案 > waitForXPath 一个 utf-8 字符串返回超时

问题描述

我有一些代码可以转到特定页面并验证该页面是否有字符串。大多数情况下,该字符串是“GNRE - Web Service”,但有时我会得到“Não há dados”(pt-BR)。因此,下面的代码返回超时。有人知道如何正确检查这一点,或者是否有类似 ut8_encode() 的事情要做?我知道代码有效,因为当字符串为“G​​NRE - Web Service”时它可以正确运行。

代码:

await page.waitForXPath("//*[contains(., 'GNRE - Web Service') or contains(., 'Não há dados')]");

错误:

TimeoutError: waiting for XPath `//*[contains(., 'GNRE - Web Service') or contains(., 'Não há dados')]` failed: timeout 30000ms exceeded

标签: javascriptpuppeteer

解决方案


您可以使用Promise.racePromise.any,如果找到任何一个文本,它们都会解决。

await Promise.race([
  page.waitForXPath("//*[contains(., 'GNRE - Web Service')]"),
  page.waitForXPath("//*[contains(., 'Não há dados')]")
])

推荐阅读