【问题标题】:Javascript Mocha Selenium Test not workingJavascript Mocha Selenium 测试不起作用
【发布时间】:2018-03-21 18:34:43
【问题描述】:

我正在尝试运行 selenium mocha 测试来检查网站 google 的标题。我在 Web.js 和 WebTest.js 的配置中这样做。这是我的课程,我不确定我是否以正确的方式进行。

Web.js

const {Builder, By, Key, until, WebElement} = require('selenium-webdriver');
var driver = new Builder().forBrowser('internet explorer').build(); 
var url = 'https://www.google.com/';

function Web() {

    var promise = new Promise(function(resolve,reject){
        return driver.get(url);
    }).then(function(title) {
        var title;
        title = driver.getTitle().toString();
        return title;
    }).catch(function(err){
        console.log(err);
    });

    return title;
}



Web.prototype.getTitle = function (title) {

    var title =  Web();
    while (title == null){
        title = Web();
    }
    return (title);
}

module.exports.Web = Web;

WebTest.js

assert = require("assert");
Web = require("../Web.js").Web

describe("A web function", function () {
    describe("getting google's title", function () {
        it("should return Google", function () {
            var result = new Web().getTitle();
            assert.equal("Google", result, "But the string " + result + " was returned instead");
        });
    });
});

我收到错误“ReferenceError: title is not defined”,这让我相信我有范围问题,但我不确定如何正确执行此操作。

感谢您的帮助。

【问题讨论】:

    标签: javascript selenium mocha.js


    【解决方案1】:

    这应该可行:

    var webdriver = require("selenium-webdriver");
    
    var DriverFactory = {
        create: function (browser) {
                return driver = new webdriver
                    .Builder().forBrowser(browser)
                    .build();
        }
    }
    module.exports = DriverFactory;
    

    然后在你的测试中使用这个模块

    var DriverFactory = require('./driverFactory.js');
    
    var assert = require("chai").assert;
    
    describe("Get title", function () {
        this.timeout(40000);
        var driver;
    
        before(async function () {
            driver = await DriverFactory.create("firefox");
        });
    
        after(async function () {
            await driver.quit();
        });
    
        it("1.Open Google website", async function () {
            await driver.get("https://www.google.com");
        });
    
        it("2.The title is 'Google'", async function () {
            var title = await driver.getTitle();
            assert.equal(title, "Google");
        });
    

    【讨论】:

    • 其实你可以使用create("internet explorer"),但是你需要一些额外的操作比如在Internet选项中启用保护模式=>安全
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    相关资源
    最近更新 更多