Я потратил часы, пытаясь понять, как решить следующую проблему.
Я автоматизирую тестовый пример с помощью Playwright - JavaScript, где мне нужно загрузить изображение, но оно выдает всевозможные ошибки. Последнее, что я пытаюсь протестировать, - это документация, загруженная в playwright.dev.
Тест: константный путь = требуется ('путь'); импортировать {тест, ожидать} из '@playwright/test';
test("s", async ({ page }) => {
await page.goto('https://www.transfernow.net/es');
await page.getByRole('button', { name: 'Inicio' }).click();
await page.getByRole('button', { name: 'Inicio' }).first().setInputFiles(path.join(__dirname, 'images.png'));
});
Ошибка:
Ошибка: locator.setInputFiles: Ошибка: узел не является HTMLInputElement Журнал вызовов:
Как я могу это исправить?
Эрик, чтобы решить эту проблему, вам необходимо убедиться, что вы используете метод setInputFiles() для входного элемента типа «файл», который виден и включен.
Спасибо, Вишал!! Ваш комментарий был верным! Я смог это решить!!!
Пожалуйста, Эрик, рад, что смог помочь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как упоминалось в комментарии, убедитесь, что вы используете метод setInputFiles() для входного элемента типа «файл», который виден и включен.
Согласно ошибке: Node не является HTMLInputElement.
Указывает, что метод setInputFiles вызывается на узле, который не является элементом ввода HTML типа file. Чтобы это исправить, вам необходимо убедиться, что вы нацеливаете правильный file элемент ввода на веб-странице.
Для справки обратитесь к приведенному ниже коду:
import { test, expect } from '@playwright/test';
const path = require('path');
test("Upload image", async ({ page }) => {
await page.goto('https://www.transfernow.net/es'); // navigate to your site
await page.getByRole('button', { name: 'Inicio' }).click(); // Click button
const fileInput = await page.$('input[type = "file"]'); // Locate the file
if (fileInput) {
const filePath = path.join(__dirname, 'images.png'); // Set the file to upload
await fileInput.setInputFiles(filePath);
} else {
console.error('File input element not found');
}
// any other action you needs to do.. comes here
});
Я имел в виду, что не могу этого понять.