量角器可以慢慢运行吗?

时间:2014-07-25 16:26:11

标签: angularjs testing protractor e2e-testing

有没有办法慢慢使用量角器编写Angular E2E测试,以便我可以观察正在发生的事情?

5 个答案:

答案 0 :(得分:75)

以下是我的解决方案。所以基本上我为当前控制流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);
};

答案 1 :(得分:13)

就像乔治·斯托克在评论中所说的那样,我不知道你为什么要这样做......但你可以随时在测试中的任何地方添加一个睡眠。

browser.sleep(6000);

答案 2 :(得分:11)

您可以在代码中输入以下命令进入'调试模式':

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
  • 按命令运行命令
  • 输入browser.pause()
  • 继续下一个调试器语句(下一个d
  • 以交互模式进入,您可以通过输入repl
  • 与所有元素进行互动

答案 3 :(得分:4)

先前的答案更像是解决方法。另一种方法是将参数添加到量角器配置中:

highlightDelay: 1000

并更改为:

directConnect: false

这将使量角器的动作(例如单击或键入)延迟1秒钟,并以浅蓝色突出显示。

答案 4 :(得分:1)

2 种方法

1.第一个很幼稚的方式,但我会留在这里

您可以突出显示您正在与之交互的元素!

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);

这真的不应该用在真正的脚本中,只有在你玩它的时候才能使用

2.在代码编辑器中设置调试配置

vs code https://medium.com/@ganeshsirsi/how-to-debug-protractor-tests-in-visual-studio-code-e945fc971a74 的例子,但同样的事情在 webstorm 中也可以实现

这将允许您逐行执行代码并实时与变量交互。每个使用量角器的人都必须拥有。我是认真的