【问题标题】:Protractor Random Alert Box "Error:jQuery not found."量角器随机警报框“错误:找不到 jQuery。”
【发布时间】:2019-01-05 00:24:06
【问题描述】:

jQuery Error

我进行了一些广泛的搜索,并找到了一些代码示例来处理您期望的警报框;但是在处理可能出现或可能不出现的随机警报框时,我找不到任何东西。

我正在处理的网站一开始就非常顽固。没有任何类型的 ID、超时、网络故障等的几个元素。

当我运行测试时,有 98% 的时间它们运行时没有出现警告框错误,一切都很好。当警报框确实弹出另外 2% 的时间显示“错误:未找到 jQuery”时,我的所有其他测试都因意外警报错误而失败。

我的第一个问题是,是否是我的代码中的某些内容导致了错误发生? (见下面的代码)我的直觉告诉我它可能是网站。因此,如果是这种情况,有人可以向我展示一个可以处理“可能”警报框并接受它的示例,而不会通过我的测试吗? swithTab() 测试首先运行,然后 setDates() 测试接下来运行。页面加载时,切换选项卡后弹出警告框错误。我尝试使用延迟承诺来处理警报并捕获错误,但它甚至在捕获错误之前就失败了。它一碰到 browser.switchTo().alert() 就会失败,因为警报通常不存在。非常感谢我能得到的任何帮助。

this.switchTab = function(){
  browser.getAllWindowHandles().then(function(handles){
    browser.switchTo().window(handles[1]);
    browser.sleep(2000);
    var lockBoxTitle = element(by.css('td.title'));
    browser.driver.wait(EC.visibilityOf(lockBoxTitle),5000);
  });
}

this.setDates = function(yesterdayDate){
  browser.sleep(3000);
  //handleAlert();
  startDateTextBox.clear();
  startDateTextBox.sendKeys(yesterdayDate);
  endDateTextBox.clear();
  endDateTextBox.sendKeys(yesterdayDate);
  retrieveBtn.click();
  browser.sleep(5000);
  expect(validateStart.getText()).toEqual(yesterdayDate);
  expect(validateEnd.getText()).toEqual(yesterdayDate);
}

【问题讨论】:

  • 如果您因为网站混乱而收到错误,这不是量角器的重点吗?您不应该计划网站的意外行为。量角器旨在捕捉意外行为,以便对其进行修复。
  • 就解决方案而言,此错误是否出现在测试中的同一位置,还是随机发生
  • 这可能是代码中的“BUG”。 jQuery/plugging/script 可能没有正确 syc 或损坏或覆盖代码。即使您通过了警报,其余的测试也可能无法通过。我有代码可以解除警报,但这是针对特定场景的。如果您可以向我显示警报框的屏幕截图,我会尝试是否可以找到解决方法。 ——
  • 本,它每次都随机出现在同一个地方。 Twin,如果您手动单击警报框上的 OK,则测试的其余部分运行良好。我正在度假,所以我一回到工作岗位就会抓拍那个截图。
  • Twinckle,我已添加您要求的图像。谢谢!

标签: javascript google-chrome selenium-webdriver protractor alert


【解决方案1】:

您可以检查是否显示弹出窗口,如果显示单击按钮关闭它:

    var popUpElm = element(by.model(""));
    var closeBtn= element(by.model(""));
    popUpElm.isDisplayed().then(function(isDisplayed) {
                        if (isDisplayed) {
                            closeBtn.click();
                            console.log("Popup is closed");
                        } else {
                            console.log("Popup is not displayed");
                        }
                    });

【讨论】:

  • 你好,桑佳。感谢您的代码示例。不过,恐怕这不适用于我的情况。如果弹出窗口不可见,isDisplayed 将引发错误。有办法解决这个问题,但是 .then(function) 也将是我必须处理的另一个出色的承诺。不过,我感谢您的努力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多