我连续有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?