【问题标题】:For loop prints log to console prior to the action actually occurredFor 循环在实际发生操作之前将日志打印到控制台
【发布时间】:2018-11-29 06:07:31
【问题描述】:

我正在自动化创建 sales quotation 的规范

for(var j=0;j<1000;j++)
{    
  element(by.cssContainingText('option','Sales Quotation')).click();
  element(by.id('Vendor_Customer_Name')).sendKeys("Abc enterprise");
  browser.driver.sleep(2000); // wait for rendring data
  element.all(by.css(".ui-corner-all")).first().click();
  for(var i=0; i<data.length;)
  {
    element(by.id('ItemCode_1')).sendKeys(data[i].Value);
    i++;
    browser.actions().sendKeys(protractor.Key.ENTER).perform();
    element(by.id('ItemQty_1')).sendKeys(data[i].Value); //Qty for quote
    i++;           
    browser.actions().sendKeys(protractor.Key.TAB).perform();
    browser.actions().sendKeys(protractor.Key.TAB).perform();
    element(by.id('ItemRate_1')).sendKeys(data[i].Value);
    i++;
    browser.actions().sendKeys(protractor.Key.TAB).perform();
    browser.actions().sendKeys(protractor.Key.TAB).perform();
    browser.actions().sendKeys(protractor.Key.TAB).perform();
    browser.actions().sendKeys(protractor.Key.ENTER).perform();
  }
  element(by.id('lnkSubmit')).click();
  element(by.xpath('//*[@id="lblSuccessMessage"]/button')).click();
  console.log("Sales Quotation No... ->"+j);
}

它的作用是打印销售报价单号。在真正创建任何单个销售报价之前从 1 到 1000 我如何使它在销售报价创建后打印 1

【问题讨论】:

    标签: javascript testing jasmine protractor automated-tests


    【解决方案1】:

    发生这种情况的原因是量角器使用了 Promise。

    参考Using protractor with loops

    我认为使用 let 代替 var 可以解决问题

    【讨论】:

    • 这会直接打印最后一个值,即 1000
    • 我的问题定义是否正确。你能显示输出并解释一下吗
    • console.log(j); 在每次执行 .then 时打印 1000
    • 尝试通过点击事件添加 browser.sleep(1000)
    • 我的回答错了。认为这是由于承诺而发生的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2015-10-28
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    相关资源
    最近更新 更多