Как я могу использовать waitforxpath условно? - PullRequest
1 голос
/ 16 апреля 2020

Иногда появляется кнопка, а иногда нет.

В случае, если она появляется, я должен нажать на нее, но если нет, я должен просто перейти к следующим шагам.

Это код, который я использовал, он не работает, потому что, если кнопка не появляется, происходит тайм-аут.

 const continueASButton = await page.waitForXPath(
    "//button[contains(@name, '__CONFIRM__')]"
  );

  await continueASButton.click();

Я тоже пробовал это, но, похоже, это не так действительный код.

if (
    (await page.waitForXPath("//button[contains(@name, '__CONFIRM__')]")) !==
    null
  ) {
    (
      await page.waitForXPath("//button[contains(@name, '__CONFIRM__')]")
    ).click();
  }

1 Ответ

0 голосов
/ 16 апреля 2020

Используйте взамен page.$x. Это оценивает данное выражение XPath и возвращает массив с результатами.

Пример

const elementsThatMayExist = await page.$x('...');
if (elementsThatMayExist.length === 0) {
  // No elements found, continue with plan B
}

Если существует только один элемент, который может соответствовать, вы можно также использовать деструктурирующее присвоение , например:

const [elementThatMayExist] = await page.$x('...');
if (!elementThatMayExist) {
  // No element found, continue with plan B
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...