Я пытаюсь научиться работать с кукловодом и хочу ввести строку в это поле ввода.
<input ng-if="::!deliveryFullAddressSelection" auto-focus="!showMultipleDeliveryAddresses" ng-model="delivery.postalCode" type="text" class="input ng-pristine ng-untouched ng-valid ng-scope ng-empty ng-valid-pattern" placeholder="Enter Zip Code" aria-label="Enter Zip Code" id="shopping-selector-postal-code" pattern="^[0-9][0-9][0-9][0-9][0-9]$" aria-invalid="false">
С помощью следующего кода:
//Wait for page to load
await self.page.waitForNavigation({ waitUntil: "networkidle0" });
let deliveryButton = await self.page.$(
"button#shopping-selector-shop-context-intent-delivery"
);
if (deliveryButton) {
await deliveryButton.click();
await self.page.waitForNavigation({ waitUntil: "networkidle0" });
await self.page.waitForSelector("input#shopping-selector-postal-code", {
visible: true,
});
//await self.page.click("input#shopping-selector-postal-code");
//await self.page.focus("input#shopping-selector-postal-code");
//await self.page.keyboard.type("1234", { delay: 30 });
//await self.page.type("input#shopping-selector-postal-code", "12345", {delay: 30,});
/*
await self.page.$eval(
"input#shopping-selector-postal-code",
(elem) => (elem.value = "12345")
);
*/
Я пробовал разные способы ввода своих значений и комментировал их. Я чувствую, что это связано с использованием Angular, но я изо всех сил пытаюсь выяснить, почему это не работает. Кажется, он не фокусируется, хотя я читал, что type () должен фокусироваться на том, что выбрано.
Редактировать: Закончилось поиском проблемы. Я ждал навигации, хотя после нажатия на кнопку он никуда не перемещался, поскольку он только открывал новое приглашение. Вместо этого я просто жду только селектора и, как только он загрузится, я могу набрать внутри.