http://webdriver.io/guide/getstarted/modes.html
尝试使用 Chromedriver 调试 webdriverio 测试时我简直要疯了。您根本无法单步调试代码,因为 webdriverio 命令是异步的,并且浏览器会话与测试不同步。
这很令人沮丧,因为阅读文档,似乎您需要一个像 Chai 或 wdio 这样的测试框架来生成测试,但这似乎只是为了程序同步命令需要做很多工作。
我只需要使用 webdriverio 抓取一些网站,但是使用 Chrome 开发工具调试此异步命令太困难了。
有没有办法强制 webdriverio 同步运行?
ex)
var loadedPage = webdriverio.remote(options).init().url('https://google.com');
except loadedPage
尚未准备好,并且在调试移动到下一行时未定义。
正如您正确指出的那样,一切都是异步的,但使用 WDIO,如果您有传统的顺序编程背景,您还可以选择完全同步。
-
异步方法(不使用WDIO 测试运行程序):
首先,您必须阅读一些有关JavaScript 承诺,尤其是.then()
功能。
var webdriverio = require('webdriverio');
var options = { desiredCapabilities: { browserName: 'chrome' } };
var client = webdriverio.remote(options);
client
.init()
.url('https://duckduckgo.com/')
.setValue('#search_form_input_homepage', 'WebdriverIO')
.click('#search_button_homepage')
.getTitle()
.then(function(title) {
console.log('Title is: ' + title);
// outputs: "Title is: WebdriverIO (Software) at DuckDuckGo"
})
.end();
使用上述方法,您将总是必须链接你的命令,但您也可以在内部使用同步命令.then()
陈述。
出于调试目的,WebdriverIO 开箱即用,设计精美读取-评估-打印循环 (REPL) 接口形式为the .debug() command。只需在您希望执行停止的位置之前将其添加到您的测试用例中,以便您可以在您选择的终端内进行调试。
Note:默认超时时间为.debug()
命令很短。确保增加它。
-
同步方法(使用WDIO 测试运行程序):
为什么不使用 WDIO 测试运行程序来让您的生活更轻松?您可以通过运行向导开始:
// if you installed the package globally, or you have the wdio
// binary in your PATH
wdio config
// or. from the root of your project
./node_nodules/.bin/wdio config
以上将产生wdio.conf.js
文件位于项目根目录中。测试运行者将使用它将来运行您的测试用例。测试运行程序还抽象了您的初始化.client()
,你就不会再去处理它了。只需选择一个框架来运行您的测试用例(Mocha、Cucumber 或 Jasmine)并开始编写测试。
Note:今后,browser
将是您的驱动程序对象。
另外,请确保您拥有wdio.conf.js
配置文件以支持这种运行测试用例的方式:设置同步标志以支持这种方法:sync: true
。您可以通过以下方式运行测试wdio wdio.conf.js
命令。
您的测试应如下所示(使用 Mocha):
var expect = require('chai').expect;
describe("Testing Robots Emporium Test Suite", function() {
beforeEach(function() {
// ==> Your setup here <==
browser.url('http://www.kevinlamping.com/webdriverio-course-content/index.html')
var currentUrl = browser.getUrl();
expect(currentUrl).include("/index.html");
})
it("The FAQs was rendered properly", function() {
var height = browser.getCssProperty("ul.accordion", 'height');
// Added a debug step just to show you how easy it is to debug
browser.debug();
expect(height.parsed.value).to.be.above(300);
// The first element was expanded
var firstItemText = browser.getText('ul.accordion li:nth-of-type(1) div');
expect(firstItemText).to.contain('be of the metal type.');
});
afterEach(function() {
// ==> Your cleanup here <==
});
});
-
异步方法(使用WDIO 测试运行程序):
这是我的首选方法。它为您提供了对测试用例执行的最佳控制,但如果您刚刚开始,我不建议您这样做。基本上就是上面的例子,但是所有的命令都是链接的。
Note:确保您拥有sync: false
为此设置标志。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)