【问题标题】:How to set 3 date in my protractor test?如何在量角器测试中设置 3 个日期?
【发布时间】:2016-07-04 14:18:33
【问题描述】:

我连续有 3 个日期字段,我正在尝试在其上随机包含日期,但是量角器太快并设置如下:

  • 第一个数据:01/08/1990(正确)
  • 第二个数据:01/09/0009(无效)
  • 最新数据:01/10/0007(无效)

所以,我使用 browser.sleep(200) 并且它有效,但是,还有另一种方法吗?这是正确的方法吗?

var dataPublicacao = element(by.xpath("//label[. = 'Data de Publicação*']/following-sibling::input"));
        dataPublicacao.sendKeys(RetornaDataAleatoria());
        browser.sleep(200);
        var dataInicio = element(by.xpath("//label[. = 'Inicio Vigência*']/following-sibling::input"));
        dataInicio.sendKeys(RetornaDataAleatoria());
        browser.sleep(200);
        var fimVigencia = element(by.xpath("//label[. = 'Fim Vigência']/following-sibling::input"));
        fimVigencia.sendKeys(RetornaDataAleatoria());

【问题讨论】:

  • 您确定RetornaDataAleatoria 函数生成有效日期吗?
  • 是的。 function RetornaDataAleatoria(){ return (Math.floor(Math.random() * 31) +1) + '/' + (Math.floor(Math.random() * 12) +1 ) + '/' + (Math .floor(Math.random() * (2016-1990) + 1990)); }

标签: javascript angularjs testing angular protractor


【解决方案1】:

我会尝试将日期字符串拆分为组件并“批量”发送密钥。这是一个相当广泛的实现形式:

var action = browser.actions().mouseMove(dataInicio).click();
var randomDate = RetornaDataAleatoria();

var day = randomDate.slice(0, 2),
    month = randomDate.slice(3, 5),
    year = randomDate.slice(6, 10);

action.sendKeys(day).sendKeys("/").sendKeys(month).sendKeys("/").sendKeys(year).perform();

如果这被证明可行,您可能应该更改RetornaDataAleatoria 函数并返回带有分隔符的日期部分数组,以便您可以简化发送键步骤而无需将字符串切成小块:

var randomDateParts = RetornaDataAleatoria();
for (var i = 0; i < randomDateParts; i++) {
    action = action.sendKeys(randomDateParts[i]);
}
action.perform();

您还可以在每个 sendKeys() 之间添加自定义 sleep() 操作以故意减慢它,在下一批键之间有一个小的延迟,请参阅:

而且,您可以完全减慢 Protractor 的速度(这可能是仅用于调试的好主意):

【讨论】:

    猜你喜欢
    • 2016-09-13
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多