javascript - selenium webdriver 不适用于 jasmine

标签 javascript node.js selenium jasmine

我正在尝试使用 Jasmine 和 selenium webdriver 编写一个简单的 UI 测试。

但是,我无法让它发挥作用。以下是我使用的环境:

  • Node v6.6.0
  • jasmine@2.5.2(作为全局模块安装)
  • selenium-webdriver@3.0.0-beta-3(安装在node_modules中)
  • ChromeDriver 2.25.426935(位于/usr/local/bin 中)
  • 最新的 Google Chrome(版本 54.0.2840.71(64 位))
  • Mac OS X 10.11.6 (El Capitan)

代码非常简单( typescript ):

import * as webdriver from 'selenium-webdriver';

let by = webdriver.By;
let until = webdriver.until;

describe("my suite", () => {

    beforeEach(() => {
    })

    afterEach(() => {
    })
    
    it("should work", () => {
        console.log("==========>");
        let driver = new webdriver.Builder()
                    .forBrowser("chrome")
                    .build();
        driver.get("https://www.google.com")
        .then(s => {
            return driver.getTitle();
        })
        .then(title => { console.log(title) })
        console.log("<==========");
    })
});

生成的JS代码:

"use strict";
var webdriver = require('selenium-webdriver');
var by = webdriver.By;
var until = webdriver.until;
describe("my suite", function () {
    beforeEach(function () {
    });
    afterEach(function () {
    });
    it("should work", function () {
        console.log("==========>");
        var driver = new webdriver.Builder()
            .forBrowser("chrome")
            .build();
        driver.get("https://www.google.com")
            .then(function (s) {
            return driver.getTitle();
        })
            .then(function (title) { console.log(title); });
        console.log("<==========");
    });
});

相同的代码可以作为独立的 JS(带 Node )运行,没有任何问题:

"use strict";
var webdriver = require('selenium-webdriver');
var by = webdriver.By;
var until = webdriver.until;
var driver = new webdriver.Builder()
    .forBrowser("chrome")
    .build();
driver.get("https://www.google.com").then(function (s) {
    return driver.getTitle();
})
    .then(function (title) { console.log(title); });
driver.quit();

我不知道 jasmine 与 selenium 一起工作是否需要任何配置。请帮忙。

Moving the webdriver initialization to "beforeEach" does not help. If I can make the code work, I'll move it to "beforeEach" and quit it in "afterEach".

最佳答案

我明白了。由于 selenium-webdriver 是异步操作,因此我需要对 jasmine/mocha 使用异步风格。

import * as webdriver from 'selenium-webdriver';

let by = webdriver.By;
let until = webdriver.until;

describe("my suite", () => {

    beforeEach(() => {
    })

    afterEach(() => {
    })

    it("should work", (done) => {
        console.log("==========>");
        let driver = new webdriver.Builder()
                    .forBrowser("chrome")
                    .build();
        driver.get("https://www.google.com")
        .then(s => {
            return driver.getTitle();
        })
        .then(title => { console.log(title); done(); })
        console.log("<==========");
    })
});

关于javascript - selenium webdriver 不适用于 jasmine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40233483/

相关文章:

extjs- 'Store is undefined'

javascript - mpld3:如何使用插件更改工具栏的位置?

javascript - 什么是 oncontentready 事件?

.net - 如何为 DevOps 启用屏幕录制?测试设置问题

Python 使用 Selenium 和 Beautiful Soup 抓取 JavaScript

javascript - 从外部源高度嵌入 iframe

node.js - 如何模拟 typeorm 连接

javascript - 设置 mongo 的更好方法是什么?

javascript - 使用 Mongoose 添加不在模式中的字段

显示 Ruby Selenium WebDriver : .?方法无效