Большинство (но не все) функции Selenium ничего не делают в node.js? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь настроить набор тестов 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 {

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