当前位置: 首页 > 面试题库 >

预期:未获得实际值

白星腾
2023-03-14
问题内容

我面临一个非常奇怪的问题。我有一套每天在Jenkins上运行的测试,并且没有任何明显的变化,一些断言(期望)开始失败。奇怪的是,只有当我在Browserstack上从Jenkins执行测试时,它们才会失败。在本地一切正常,在浏览器堆栈本地一切正常,在saucelabs上一切正常。我有3个具有类似期望的it()块:

value1 = $('.someclass');
value2 = ..
value3 = ..
expect(value1.getText()).toContain('tratata');
expect(value2.getText()).toContain('uhuhuhu');
expect(value3.getText()).toContain('ahahaha');

它们都位于不同的it()块中。现在奇怪的是:

当我执行测试时,使用第一个assert块进行的测试就很好了,而在第二个测试块上,它说了assert失败了(我做了一些事情以更改值),但是手动/本地我发现一切都很好。同样在执行测试时,我看到值正在更改(我什至没有截屏并检查浏览器堆栈上的可视日志)。在第三个it块中,我执行了其他操作,然后再次断言失败,但是将其与我从第2步(而不是第1步)获得的值进行比较!因此,由于某种原因,我似乎落后了一步…如果我评论它受阻或只是在第一个测试中主张,第二个就可以通过,但第三个失败。如果我评论2它阻止,则第三次可以通过。

在这种特殊情况下,由于某种原因听起来有些神奇,并且仅在Jenkins上并且仅在Browserstack上发生。顺便说一句,测试已经运行了一段时间没有任何问题,并且没有任何更新就开始失败。

尽管由于某种原因我在控制流方面遇到问题,但我等待其他元素的出现,我也尝试使用browser.sleep()反模式来对其进行更好的研究,但它仍然处于落后地位。

我不是在直接寻找特定的解决方案,但是任何建议将不胜感激,我不确定应该提供哪些其他信息,希望我已经足够描述问题了。

@ protractor2.1.0 @ jasmine2.3.2

browser.ignoreSynchronization = false



  it('', function () {
        expect(viewBookingDetailsPage.totalCostSection.depositDue.getText()).toContain('542.00');
        expect(viewBookingDetailsPage.totalCostSection.remainingBalance.getText()).toContain('4,878.00');
        expect(viewBookingDetailsPage.totalCostSection.totalDepositAmount.getText()).toContain('5,420.00');
    });


it('', function () {
        $(viewBookingDetailsPage.eventAndItemsSection.addItemsBtn).click();
        helper.waitElementToBeVisisble(viewBookingDetailsPage.addItemsModal.modalOpen);

        viewBookingDetailsPage.addonItemAttribute(0, viewBookingDetailsPage.addItemsModal.events).click();

        helper.waitElementToBeVisisble(viewBookingDetailsPage.addItemsModal.eventSelectionPopup);

        viewBookingDetailsPage.addItemsModal.availableEvents.then(function (events) {
            //Morning event
            events[3].$('i').click();
            viewBookingDetailsPage.addonItemAttribute(0, viewBookingDetailsPage.addItemsModal.selectItem).click();
            viewBookingDetailsPage.addonItemAttribute(1, viewBookingDetailsPage.addItemsModal.selectItem).click();
            viewBookingDetailsPage.addItemsModal.addButton.click();

            helper.waitElementToDisappear(viewBookingDetailsPage.addItemsModal.modalOpen);
            helper.waitElementToBeVisible(viewBookingDetailsPage.addonItemDetail(0, 0, 0, viewBookingDetailsPage.eventAndItemsSection.itemName));

            expect(viewBookingDetailsPage.totalCostSection.depositDue.getText()).toContain('592.00');
            expect(viewBookingDetailsPage.totalCostSection.remainingBalance.getText()).toContain('5,328.00');
            expect(viewBookingDetailsPage.totalCostSection.totalDepositAmount.getText()).toContain('5,920.00');
        });
    });

     it('', function () {

        viewBookingDetailsPage.addonItemDetail(0, 0, 0, viewBookingDetailsPage.eventAndItemsSection.removeItem).click();  ----- method just returns element into multiple internal repeaters

        expect(viewBookingDetailsPage.totalCostSection.depositDue.getText()).toContain('580.00');
        expect(viewBookingDetailsPage.totalCostSection.remainingBalance.getText()).toContain('5,220.00');
        expect(viewBookingDetailsPage.totalCostSection.totalDepositAmount.getText()).toContain('5,800.00');
    });

问题答案:

我通过直接等待文本更改来解决此问题:

browser.wait(function() {
    return viewBookingDetailsPage.totalCostSection.depositDue.getText().then(function(text) {
        return text === '592.00USD';
    });
}, 15000);

我确定这里有些问题,但是对我有用。如果我有空闲时间,我将尝试增强答案并进行更深入的研究。



 类似资料:
  • X_序列,X_测试,y_序列,y_测试=序列测试分割(X,y,测试尺寸=0.2,随机状态=0)y_序列导入火炬导入火炬。nn作为nn导入火炬。nn。作为F函数 运行此代码时,出现以下错误: 如何解决此错误?

  • 我已经尝试用不同的方式和指向不同的HTTPS站点来编写上面的内容;它在HTTP站点上工作,我已经安装了“Net::SSL”(“Crypt::SSleay”是最新的。(0.72)),没有防火墙,重新安装了最新的XAMPP服务器,安装了最新的草莓Perl来代替XAMPP服务器,只是没有想法了,欢迎任何建议。 编辑;shebang行实际上指向Strawberry Perl便携,我用它替换了XAMPP P

  • 在调用的返回类型中,的预期类型无法与实际类型匹配。可能的原因:应用于表达式:公式中中的参数太少: 在的第二个参数中,即表达式:中的中的与实际类型在方程中的无法匹配: 为什么不管用?我不能理解。请帮我一把。这些错误是可以理解的,但我不知道它们的原因。

  • 我正在开发一个android应用程序,向用户显示预订的时间和日期。目前我使用的是系统时间和日期,但问题是用户可以随时更改它。那么如何得到正确的时间和日期呢?我在这个问题上工作了3天多,但我还没有找到任何解决办法。任何帮助都很感激。

  • 我看到多伦多在UTC-4上。 但我怎么才能得到真正的偏移呢?

  • 我正在使用Spring AOP和Log4J实现一个记录器作为一个方面,但是我注意到日志文件中的类名始终是类名,所以。。。有没有办法在我的日志中跟踪实际的类名?