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


第一个数据:1990年1月8日(正确)
第二个数据: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());

最佳答案

我会尝试将日期字符串拆分为多个部分,然后在“批次”中发送密钥。这是非常广泛的形式的实现:

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


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


Custom browser actions in Protractor


而且,您可以完全放慢量角器的速度(可能仅是调试的好主意):


Can protractor be made to run slowly?

07-28 03:13
查看更多