1

我正在关注本教程 http://engineering.wingify.com/posts/e2e-testing-with-webdriverjs-jasmine/

第一部分要求创建 testfile.js

var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
    withCapabilities(webdriver.Capabilities.chrome()).
    build();

driver.get('http://www.wingify.com');

当我运行 node testfile.js 时,我能够让浏览器运行

我创建了 testfile.js

$ 猫 testfile.js

var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
    withCapabilities(webdriver.Capabilities.chrome()).
    build();

describe('basic test', function () {
    it('should be on correct page', function () {
        driver.get('http://www.wingify.com');
        driver.getTitle().then(function(title) {
            expect(title).toBe('Wingify');
        });
    });
});

我到了你运行 jasmine-node 的部分

$ jasmine-node testfile.js 

Finished in 0 seconds
0 tests, 0 assertions, 0 failures, 0 skipped

预期的行为是它启动浏览器,但这不是我所经历的。

4

3 回答 3

4

尝试jasmine-node --matchall testfile.jsjasmine-node testfile.spec.js,默认情况下 jasmine-node 搜索文件名中包含“spec”的文件。

于 2014-02-21T10:58:40.560 回答
2

您需要通过调用来增加超时值:

jasmine.DEFAULT_TIMEOUT_INTERVAL = 9999999;

看看这个示例要点(我在这里使用了 WebdriverIO)。

于 2014-02-14T10:47:54.650 回答
0

我有同样的事情。driver.getTitle() 是异步的,因此 Jasmine 在返回任何内容之前完成。我使用 driver.wait() 尝试了几件事,但无法获得正确的异步。

最后我使用了 Jasmine waitsFor - 这等待一个真实的结果,或者它有自己的自定义超时。

下面的示例稍微复杂一些,当我加载 Google 时,进行搜索然后检查结果中的页面标题。

在这个例子中,你不需要设置全局 Jasmine 超时,这对我来说无论如何都不起作用。

describe('basic test', function () {

    it('should search for webdriver and land on results page', function () {
        var match = 'webdriver - Google Search',
            title = '';

        driver.get("http://www.google.com");
        driver.findElement(webdriver.By.name("q")).sendKeys("webdriver");
        driver.findElement(webdriver.By.name("btnG")).click();

        // wait for page title, we know we are there
        waitsFor(function () {
            driver.getTitle().then(function (_title) {
                title = _title;
            });
            return title === match;
        }, 'Test page title, so we know page is loaded', testTimeout);

        // test title is correct
        runs(function () {
            expect(title).toEqual(match);
        });
    });
});

waitsFor 进行轮询,直到返回真正的结果,此时执行以下 runs()。对我来说似乎没什么长篇大论,特别是因为它做了两次比较,一次是等待,另一次是茉莉花断言。

我做了另一个例子,使用 mocha 而不是 jasmine,使用 assert 库,确实有这个问题。

于 2014-07-15T14:30:03.280 回答