Как узнать, подана ли форма без ошибок в кукловоде - PullRequest
1 голос
/ 16 апреля 2020

Я пытаюсь отправить форму и проверяю случаи, когда форма не будет отправлена ​​из-за неверного ввода. Если введенный мною почтовый индекс действителен, то эта строка кода вернет значение NULL, поскольку сообщения об ошибке не было.

await self.page.waitForFunction(
    'document.querySelector("#adr-zip-error")'
  );

Однако перед этим нужно жестко запрограммировать задержку или установить какое-то время ожидания на поймать это сообщение об ошибке. Я также попытался проверить, является ли сама форма нулевой, таким же образом, но снова, она работает, только если я проверяю через некоторое время, так как для отправки формы требуется время.

Есть ли способ сказать, если форма отправлена ​​успешно без использования жестко заданной задержки?

Ответы [ 2 ]

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

Это не общее решение, и оно адаптировано к этой проблеме. Вы можете использовать waitForResponse

const response = await page.waitForResponse(response => response.url().startsWith("https://app.shipt.com/api/v1/customer_addresses"));
if (response.ok())
//success

или просто проверить правильность ввода:

const invalid = await page.evaluate(() => document.querySelector('#adr-zip').getAttribute('aria-invalid') === "true");
0 голосов
/ 16 апреля 2020

После отправки вы можете сделать что-то вроде:

await Promise.race([
  page.waitFor('#adr-zip-error'),
  page.waitForNavigation()
])

, а затем

let error = await page.$('#adr-zip-error')

сообщит вам, если сначала произошла ошибка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...