如何说量角器等到页面加载?

Posted

技术标签:

【中文标题】如何说量角器等到页面加载?【英文标题】:How to say protractor to wait till page loads? 【发布时间】:2015-12-13 04:12:27 【问题描述】:

我的应用程序需要一些页面来分页登录页面。所以量角器试图在页面加载之前输入用户名。所以我需要说量角器等到登录页面加载。

能否请您帮我,我需要使用什么命令以及我需要在哪里使用?(请修改我的代码以添加等待命令)

我的 onPrepare 和 beforeeach 函数的 PFB

onPrepare: function()   
browser.driver.manage().window().maximize();
jasmine.getEnv().addReporter(new htmlReporter(

)


beforeEach(function() 
       browser.get('https://accounts.google.com/');
       //browser.manage().timeouts().pageLoadTimeout(30000);
       //browser.manage().timeouts().implicitlyWait(5000);
        //browser.sleep( 10000 );
        //browser.waitForAngular();
  );

我使用了那些注释功能,但它对我不起作用。

请指导我。提前谢谢。

【问题讨论】:

【参考方案1】:

使用等待命令:browser.driver.wait(condition, timeout);

onPrepare: function()   
    browser.driver.manage().window().maximize();
    jasmine.getEnv().addReporter(new HtmlReporter(
    );


beforeEach(function() 
       browser.driver.get('https://accounts.google.com/');
       return browser.driver.wait(function() 
            return browser.driver.getCurrentUrl().then(function (url) 
                return url.indexOf('https://accounts.google.com/') > -1;
            );
        , 5000);
        //whatever you want after
  );

您可以等待任何类似的情况。 此外,google f.e 不是 Angular 页面,因此您应该使用: browser.driver.get 而不是量角器 browser.get, 否则它将等待页面上的角度。

【讨论】:

【参考方案2】:

假设你想点击Get Started按钮,wait按钮变成clickable:

var EC = protractor.ExpectedConditions;

var getStarted = element(by.css('button[title="Get started"]'));
browser.wait(EC.elementToBeClickable(getStarted), 5000);
getStarted.click();

【讨论】:

以上是关于如何说量角器等到页面加载?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何让页面等到数据加载?

Selenium - 如何等到页面完全加载[重复]

如何让jquery在页面没加载完就可以执行,每次要等到整个hmtl加载完才可以执行jquery,这样很慢

量角器:单击按钮后如何等待页面完成?

browser.executeScript(return window.document.readyState)未在量角器中得到解决

如何让页面加载完成后执行js