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

等待量角器/ Webdriver中的页面重定向

西门骁
2023-03-14
问题内容

我有一个单击按钮并重定向到用户仪表板的测试。发生这种情况时,Webdriver返回: javascript error: document unloaded while waiting for result.

为了解决这个问题,我将插入browser.sleep(2000)到发生重定向的位置,并假设我的CPU使用率很低,这可以解决此问题。但是,2000
ms是任意的并且很慢。是否有类似的东西browser.waitForAngular()会等到Angular在重定向页面上加载之前expect(..)

it('should create a new user', () => {

  $signUp.click();

  $email.sendKeys((new Date().getTime()) + '@.com');

  $password.sendKeys('12345');

  $submit.click();



  browser.sleep(2000); // Need alternative to sleep...



  // This doesn't do it...

  // browser.sleep(1);

  // browser.waitForAngular();



  $body.evaluate('user')

  .then((user) => {

    expect(user).toBe(true);

  });

});

问题答案:

您认为这样的事情对您有用吗?最多需要等待10秒,URL才能包含文本“ pageTwo”或您输入的任何内容。

var nextPageButton = $('#nextPage');
nextPageButton.click().then(function(){
    return browser.driver.wait(function() {
      return browser.driver.getCurrentUrl().then(function(url) {
        return /pageTwo/.test(url);
      });
    }, 10000);
};

只需粘贴您期望的网址的正则表达式即可。

或者,您也可以等待下一页中的元素出现:

var nextPageButton = $('#nextPage');
nextPageButton.click();

var elementFromSecondPage = $('#coolElement');
browser.wait(protractor.until.elementIsVisible(elementFromSecondPage), 5000, 'Error: Element did not display within 5 seconds');

使用.click时,量角器自然会等待角度操作来完成附加到该点击的动作,例如更改页面。但是,在页面更改时,您可能仍然需要加载特定的内容,因此在该部分可用之前测试失败。使用它,它应该等待单击零件完成,然后等待元素出现。



 类似资料:
  • 我有一个页面,它用ajax加载动态内容,然后在一定时间后重定向(不固定)。我如何强制Selenium Webdriver等待页面重定向,然后立即转到另一个链接?

  • 问题内容: 我正在测试AngularJS应用程序,并且对量角器非常新。每次我打开浏览器时,它都会打开,然后等待超时,然后在cmd上引发以下错误。 我尝试增加超时限制,但始终会收到此错误。我也尝试过使用所有这些: 该页面正确加载,并且如果我使用Eclipse和Selenium与按钮对象进行交互,则可以正常工作。 只有量角器出现同步问题。请帮忙。 问题答案: 量角器超时的可能原因: 您的网页未以预期的

  • 我对selenium webdriver有问题,如果有人能帮助我,我将非常感激 环境: 硒服务器独立-2.31.0.jar / 硒-服务器-独立-2.35.0.jar IE驱动程序服务器.exe(已尝试版本 2.28 - 2.35) 示例代码: 问题:修复这些问题都会对我有所帮助 href。sendKeys()成功模拟用户单击,但不等待页面加载。 href。click()无法模拟用户单击,但成功等

  • 问题内容: 我在使用量角器时遇到了一些麻烦。我有一个非常奇怪的ui- router状态,很难摆脱其他元素来开始使用该页面。有没有办法告诉量角器等到元素最终出现在DOM中?不可见/未显示,但实际上已创建?我一直尝试使用等待元素,但是显然无法选择它。 问题答案: 您应该能够与ExpectedCondition一起使用:

  • 问题内容: 我正在使用小型AngularJS应用测试量角器。 这是测试: 控制器: 草稿服务: 使用量角器运行此测试会导致以下错误: 但是,如果在控制器中更改此行: 对此: 测试失败,但未达到预期目的,但更重要的是:它不会超时。 启用query()时,在浏览器中手动运行应用程序以及查看Protractor打开的浏览器窗口时,转发器均会正确显示API返回的数据。 当服务与API通信时,为什么Prot