大多数(但不是全部)Selenium函数在node.js中什么都不做?

时间:2019-10-09 08:04:00

标签: javascript node.js selenium selenium-webdriver

我正在尝试为我编写的Node.js Web应用程序设置一个Selenium测试套件。但是,在编写特定测试之前,我需要确保可以完全使用Selenium。我已经从测试编写退了一步(尽管其中有些导入等仍在我的代码中),并且一直在遵循本教程:https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment

当我运行以下代码时,Selenium将启动一个窗口,并按照指示在Google的搜索栏中键入“ webdriver”。但是,除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 {

    }
})();```

0 个答案:

没有答案