我正在使用节点检查器来调试我的实习功能测试。在功能测试中如何使用调试器? 如果我有一个看起来像
的功能测试'Sample Test' : function() {
console.log("load row grid mesh test");
return this.remote
.setFindTimeout(5000)
.setWindowSize(800, 500)
.then(pollUntil('return document.evaluate("//span[contains(@class, \'abcd\') and following-sibling::span[child::span[text() = \'App\']]]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
.expand("App")
.expand("Sample")
.open("SampleApp.xlsx")
.then(pollUntil('return document.evaluate( "//div[contains(@class, \'Cover\') and @style = \'display: none; top: 0px; left: 0px;\']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
.findAllByClassName("abc")
.getAttribute("style")
.then( function(style) {
//I am able to put a debugger here without isssue
assert.isTrue(style.length < 32);
assert.notStrictEqual(style[0].indexOf("top: 0px;"), -1);
assert.notStrictEqual(style[25].indexOf("top: 480px;"), -1);
}).end()
debugger // I NEED TO PAUSE HERE
.findByXpath('//div[@class = \'abc\']//span[text() = \'AppleSample\']')
.moveMouseTo().end()
不确定如何放置调试器。我是实习生的新手。任何帮助将不胜感激
答案 0 :(得分:0)
我个人不熟悉实习生,但假设它提供了Promise接口,您应该能够添加以下代码来触发调试器:
'Sample Test' : function() {
console.log("load row grid mesh test");
return this.remote
.setFindTimeout(5000)
.setWindowSize(800, 500)
.then(pollUntil('return document.evaluate("//span[contains(@class, \'abcd\') and following-sibling::span[child::span[text() = \'App\']]]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
.expand("App")
.expand("Sample")
.open("SampleApp.xlsx")
.then(pollUntil('return document.evaluate( "//div[contains(@class, \'Cover\') and @style = \'display: none; top: 0px; left: 0px;\']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
.findAllByClassName("abc")
.getAttribute("style")
.then( function(style) {
//I am able to put a debugger here without isssue
assert.isTrue(style.length < 32);
assert.notStrictEqual(style[0].indexOf("top: 0px;"), -1);
assert.notStrictEqual(style[25].indexOf("top: 480px;"), -1);
}).end()
.then(function(node) {
debugger; // PAUSE HERE
return node; // forward the promise value
});
.findByXpath('//div[@class = \'abc\']//span[text() = \'AppleSample\']')
.moveMouseTo().end()
答案 1 :(得分:0)
我认为一般来说,很难像你所拥有的那样阅读长篇剧本。 如你所见,它也很难调试。
我会将其分解为变量,例如:
var setConfig = this.remote
.setFindTimeout(5000)
.setWindowSize(800, 500);
var openSample = setConfig
.then(pollUntil('return document.evaluate("//span[contains(@class,\'abcd\') and following-sibling::span[child::span[text() = \'App\']]]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)
.singleNodeValue', 8000))
.expand("App")
.expand("Sample")
.open("SampleApp.xlsx");
var abc = openSample.then(pollUntil('return document.evaluate( "//div[contains(@class, \'Cover\') and @style = \'display: none; top: 0px; left: 0px;\']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
.findAllByClassName("abc");
...
它仍然不是最好的方式,但至少它看起来更清晰,可以帮助您更轻松地进行调试。
答案 2 :(得分:0)
我发现自己通过大多数时间手动暂停promise字符串进行调试。
我在问题行之前使用.sleep(10000)
暂停测试,然后从终端手动退出crtl + c并使用firebug查看浏览器的状态。
您还可以在运行测试时设置记者类型&#39; console&#39;在找到代码中的错误时,记者非常有帮助,虽然有点冗长。更多实习生文档https://theintern.github.io/intern/#reporter-overview