Я пытаюсь настроить набор тестов Selenium для написанного веб-приложения Node.js. Однако, прежде чем я смогу написать конкретные тесты, я должен убедиться, что смогу заставить Selenium работать вообще. Я отступил от тестовой записи (хотя некоторые операции по импорту и т. Д. Все еще находятся в моем коде) и следовал этому руководству: https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment
Когда я запускаю приведенный ниже код, Selenium запускаетсяоткройте окно и введите «webdriver» в строку поиска Google в соответствии с инструкциями. Однако ни одна из команд, кроме sendKeys()
, похоже, ничего не делает. Кнопка не нажата, форма не отправлена ни одной из других строк, которые должны это сделать.
Если я закомментирую две средние строки await
, то вторая строка sendKeys
выполнитсяи отправь поиск таким образом, иначе он должен просто навсегда зависнуть на них. Я не могу понять, почему некоторые методы работают и почему некоторые вызывают неопределенное ожидание. Я даже пытался просто скопировать вставленный выше учебник Mozilla и запустить его, но такая же проблема возникает даже с .then
, а не await
.
Любое понимание будет высоко ценится!
РЕДАКТИРОВАТЬ: я пытался написать те же сценарии на Java, и все работает, как ожидалось. Тем не менее, я бы все же предпочел, чтобы они были в js, так что проще с моим приложением Node.js.
const webdriver = require('selenium-webdriver'),
Builder = webdriver.Builder,
By = webdriver.By,
until = webdriver.until;
const chrome = require('selenium-webdriver/chrome');
const chai = require('chai');
const expect = chai.expect;
const chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
process.on('unhandledRejection', () => {});
let driver;
(async function doTests() {
try {
describe ('Test that login with sample user works', async function () {
this.timeout(20000);
// let driver, page;
driver = new Builder().forBrowser('chrome').build();
await driver.get('http://www.google.com');
let searchBox = await driver.findElement(By.name('q'));
await searchBox.sendKeys('webdriver');
await driver.findElement(By.name('btnK')).click();
await driver.findElement(By.name('q')).submit();
await searchBox.sendKeys(webdriver.Key.ENTER);
});
} catch (ex) {
console.log (new Error(ex.message));
} finally {
}
})();```