【问题标题】:how to have protractor take over browser in the middle of an application如何让量角器在应用程序中间接管浏览器
【发布时间】:2013-12-06 23:09:45
【问题描述】:

我编写了一个使用 require js 的 Angular 项目,因此大多数 javascript 在登陆特定页面集之前不会被加载。 (包括angular.js)

在编写流程时,我不得不使用 browser.driver 来代替 ptor,并且在 angular 组件出现之前效果很好。现在我正在尝试找到一种方法将 ptor 的初始化压缩到 browser.driver 和在特定流动之后滚动角度。所以我有这样的东西

        browser.driver.getCurrentUrl().then(function(url){
            ptor = protractor.getInstance();
            // ptor.ignoreSynchronization = true;
            ptor.get(url);
        })
        ptor.sleep(2000);

即使我超时,在语句之后似乎也没有定义 ptor。我应该如何在这里进行交换。并用url做一个量角器的构造函数。无需重新加载。

-------------插件--------- 好的,这就是我所拥有的

        searchInput = browser.driver.findElement(by.css('#searchstring')); 
        searchInput.sendKeys('logan airport');
        searchInput.sendKeys(protractor.Key.ENTER)//.perform();
        browser.driver.sleep(6000);

        browser.driver.wait(function(){ //angular loads here
            return browser.driver.getCurrentUrl(function(url){
                searchUrl = url;
                return /screwdriver/.test(url);
            });
        }, 10000)
        browser.driver.sleep(2000);
        /*UNEXECUTED CODE HERE: Error while waiting for angular to sync with your page*/
        firstItem =  element.all(by.css('.itemContainer')).get(1).click();
        browser.driver.sleep(10000);

这就是我现在正在做的事情......

            searchInput = ptor.findElement(protractor.By.css('#searchstring'));
            searchInput.sendKeys('logan airport');
            searchInput.sendKeys(protractor.Key.ENTER)//.perform();
            ptor.sleep(6000);

            ptor.wait(function(){ //this page loads angular, but stuck on white page, which with previous version this is fluent, it says angular cannot be found on the page
                return ptor.driver.getCurrentUrl().then(function(url){
                    searchUrl = url;
                    return /screwdriver/.test(url);
                });
            }, 10000)

            ptor.sleep(2000);

            /*NOT EXECUTED: Error while waiting for angular to sync with your page*/
            foundItems = ptor.findElement(protractor.By.css('.itemContainer')); 
            firstItem = foundItems.get(1).click();
            ptor.sleep(2000);

两者似乎都不起作用,一个是角度不同步,另一个是角度未找到,但如果你按 f12 并输入角度,实际页面将存在角度。

【问题讨论】:

    标签: angularjs-e2e protractor


    【解决方案1】:

    您实际上不必使用新语法构造 ptor(在新语法中,ptor ~= browser)。 ptor.url 表示“加载此页面”,而不是“为此页面制作量角器”。你可能想要这样的东西:

    browser.driver.get(yourUrl);
    browser.driver.wait(function() {
       // Put in some test here that returns true when Angular is ready to go.
    });
    element(by.id('foo')); // Start using protractor here!
    

    【讨论】:

    • 实际上我认为需要 ptor 才能找到转发器绑定元素。 “ptor”驱动程序会是一个可行的解决方案。
    • 对不起,我不明白你的评论。你试过我写的代码 sn-p 吗?你会遇到什么错误?
    猜你喜欢
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2011-09-23
    • 2016-12-29
    相关资源
    最近更新 更多