有没有一种方法可以缓慢运行使用Protractor编写的Angular E2E测试,以便我可以观察正在发生的事情?
有没有一种方法可以缓慢运行使用Protractor编写的Angular E2E测试,以便我可以观察正在发生的事情?
execute
函数创建了一个装饰器,现在在每个排队的操作之前额外排队了100ms的延迟。describe
块之外)。var origFn = browser.driver.controlFlow().execute;
browser.driver.controlFlow().execute = function() {
var args = arguments;
// queue 100ms wait
origFn.call(browser.driver.controlFlow(), function() {
return protractor.promise.delayed(100);
});
return origFn.apply(browser.driver.controlFlow(), args);
};
就像George Stocker在评论中所说的那样,我不知道为什么你想要这样做...但是你可以随时在测试中添加一个sleep。
browser.sleep(6000);
之前的回答看起来更像是解决办法。另一种方法是在Protractor配置中添加参数:
Previous answers look more like workaround. Another way is to add param to Protractor config:
highlightDelay: 1000
并更改为:
directConnect: false
它会延迟Protractor点击或输入等操作1秒,并以浅蓝色突出显示。
你可以通过在代码中输入以下命令进入“调试模式”:
browser.pause();
在调试模式下,您将在终端中看到以下输出:------- WebDriver Debugger -------
ready
press c to continue to the next webdriver command
press d to continue to the next debugger statement
type "repl" to enter interactive mode
type "exit" to break out of interactive mode
press ^C to exit
你可以进行以下操作:
c
逐个执行命令d
继续执行直到下一个调试器语句(下一个 browser.pause()
)repl
进入交互模式,与所有元素进行交互你可以突出显示你正在交互的元素!
highlightElement: async ($elementObject, time = 1000) => {
async function setStyle(element, style) {
const previous = await element.getAttribute('style');
await element.setAttribute('style', style);
await setTimeout(() => {
element.setAttribute('style', previous);
}, time);
}
await browser.sleep(time)
return await browser.executeScript(await setStyle, $elementObject.getWebElement(), 'color: red; background-color: yellow; z-index: 9999;');
},
这将使元素高亮一秒钟
然后使用此元素包装您的操作
let click = async function ($elem) {
await highlightElement($elem);
await $elem.click();
}
let sendKeys = async function ($elem, text) {
await highlightElement($elem);
await $elem.sendKeys(text);
}
然后使用它来尝试一些脚本
await sendKeys($login, username);
await sendKeys($password, password);
await click($submit);
这段代码不应该在真正的脚本中使用,只有在你玩弄它时才可以使用
以vs code为例https://medium.com/@ganeshsirsi/how-to-debug-protractor-tests-in-visual-studio-code-e945fc971a74,但在webstorm中也可以实现相同的功能
这将允许您逐行执行代码并实时与变量交互。对于每个使用protractor的人来说,这是必备的。我是认真的