标签: angularjs-e2e

模拟angularjs http请求

所以我在问这个之前已经做了很多研究,但没有一个是我想要的.

我有一个带有角度模块的app appstrap.模块内的控制器发出一些http请求.现在我正在为ui进行单元测试我的应用程序,我需要模拟http请求.我读过的所有嘲笑都是用茉莉花完成的,但我不想用它.

我希望每当我打开应用程序时,所有请求都会被嘲笑.我已经尝试了角度模拟和后端嘲笑,它们都没有工作.我不想预先填充范围元素,因为代码应该是部署就绪的.

javascript angularjs angularjs-e2e

4
推荐指数
1
解决办法
4162
查看次数

验证元素在量角器中消失

为了等待目的,我使用这种等待功能:

    browser.wait(function()
    {
        return browser.isElementPresent(by.repeater('recentName in recentNames').row(0));
    }, 10000);
Run Code Online (Sandbox Code Playgroud)

我如何等待元素从页面中消失?我的项目有很多模态窗口,因为元素总是出现在页面上我不时遇到困难和测试失败,因为我使用了错误的元素等待.例如,我有这样的元素,在单击Enter后模态窗口关闭时消失:

<div class="modal-backdrop  in"></div>
Run Code Online (Sandbox Code Playgroud)

angularjs-e2e protractor

4
推荐指数
2
解决办法
6842
查看次数

量角器:函数重载

我尝试扩展ElementFinder库.我想知道如何才能要求使用相同名称的不同方法?我想做一些像:

 // spec.js
 var ef1 = require('./ef_extend1.js');
 var ef2 = require('./ef_extend2.js');

 expect(column_resizer.ef1.getWidth()).toEqual(18);
 expect(column_resizer.ef2.getWidth()).toEqual(18);
Run Code Online (Sandbox Code Playgroud)

现在我有一个错误:

TypeError: Cannot read property 'getWidth' of undefined
Run Code Online (Sandbox Code Playgroud)

我需要的图书馆:

// ef_extend1.js
var ElementFinder = $('').constructor;
ElementFinder.prototype.getWidth = function() {
    return this.getSize().then(function(size) {
                                  return size.width + 1;
                               });
};
Run Code Online (Sandbox Code Playgroud)

第二个:

// ef_extend2.js
var ElementFinder = $('').constructor;
ElementFinder.prototype.getWidth = function() {
    return this.getSize().then(function(size) {
                                  return size.width;
                               });
};
Run Code Online (Sandbox Code Playgroud)

overloading angularjs angularjs-e2e protractor e2e-testing

4
推荐指数
1
解决办法
492
查看次数

错误:在11001ms之后等待Protractor与页面同步超时."当用户browser.getCurrentUrl()时

我正在测试登录和注销功能,下面是我的测试用例

it('should redirect to login page on click of logout',function(){
    signInPage.email.sendKeys('zahid.afaque@meltwater.com');
    signInPage.password.sendKeys(1234);
    signInPage.loginButton.click();
    expect(browser.getCurrentUrl()).toMatch(/\/collections/);
    signInPage.profileImage.click();
    signInPage.logout.click();
    browser.waitForAngular();
    expect(browser.getCurrentUrl()).toMatch(/\/login/);
});
Run Code Online (Sandbox Code Playgroud)

当我在测试上运行时,它的失败和下面是错误消息

Error: Timed out waiting for Protractor to synchronize with the page after 11001ms. Please see https://github.com/angular/protractor/blob/master/docs/faq.md
Run Code Online (Sandbox Code Playgroud)

我尝试使用,browser.waitForAngular();但它没有帮助.当我删除期望"expect(browser.getCurrentUrl()).toMatch(/\/login/);"然后它已经过去了.任何人遇到同样的问题,任何帮助都是适当的

javascript jasmine angularjs-resource angularjs-e2e protractor

3
推荐指数
1
解决办法
3036
查看次数

量角器:获得与xpath绑定的值

如果我有这样的HTML:

<body>
    <div id="menu">
       <div id="button"> {{ someBinding }} </div>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

我在量角器中有这样的声明:

ptor.findElement(By.xpath("/body/div[@id='menu']/div[@id='button']"));
Run Code Online (Sandbox Code Playgroud)

我将使用什么来获取{{someBinding}}的值?似乎量角器试图将值与绑定名称进行比较.因此,如果我希望{{someBinding}}说"Hello World",则会抛出错误说明

Expected: {{someBinding}} to equal 'Hello World'
Run Code Online (Sandbox Code Playgroud)

xpath angularjs angularjs-e2e protractor

3
推荐指数
1
解决办法
2万
查看次数

如何使用 Protractor 测试电子邮件链接?

我正在使用 Protractor 编写测试,我想了解如何测试电子邮件链接。我的意思是,测试普通链接很容易,因为您只需查看新 URL。但是当您单击电子邮件链接时,您可以转到外部电子邮件提供商,所以有什么解决方案吗?谢谢

javascript testing end-to-end angularjs-e2e protractor

3
推荐指数
1
解决办法
894
查看次数

如何识别量角器中的页面元素,没有明显的可识别属性

背景

我有一些(Angular JS模板)HTML如下:

<div class="data-handler-container">
    <div class="row">
        <div class="data-handler" ng-if="dataController.showDistance()">
            <p>{{ 'Item Count' | translate}}
            <p class="metric">{{dataController.project.item_total | converter:dataController.user.unit | number: 6}}<span class="unit">{{dataController.user.unit}}</span></p>
        </div>

        <div class="data-handler">
            <p>{{ 'Total Time' | translate}}</p>
            <p class="metric">{{dataController.project.time_total | format:'time':'hh:mm:ss'}}</p>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我现在正在使用量角器编写e2e测试.我需要识别度量元素,以便我可以访问测试中的值.

我不认为我可以简单地使用class在这种情况下,因为第一个元素是在一个ng-if所以可能不存在.我必须按类识别,然后在我的测试中编写一些逻辑来计算返回数组中的项目 - 并根据计数匹配它们.在这个例子中,它不会太复杂,但在其他情况下,它将是笨重的.

我可以在具有特定值的项目之后选择段落 - Total Time例如,这将起作用,但似乎不太理想.如果另一个页面元素具有相同的文本怎么办 - 我的测试需要再次更新.

据我所知,我不能通过模型​​识别项目,因为它们是通过过滤器传递的,我不想指定所有过滤器等......作为选择器的一部分.

问题

  1. 有没有理想的方法来确定测试指标?
  2. 如果没有理想的方式,没有操纵HTML的最佳方法是什么?
  3. 如果改变HTML是最好的方法是什么?
  4. 通常可以改变HTML以使测试更容易识别组件吗?

html javascript angularjs angularjs-e2e protractor

3
推荐指数
1
解决办法
1166
查看次数

用量角器获取伪元素的值

我想验证伪元素的文本内容.承诺从使用中返回ptor.executeScript("window.getComputedStyle(jQuery('.my-class')[0], ':after').content").then(function(data){ console.log(arguments) // {'0':null} });

我也试过在预期中放弃它,但我猜这是因为同样的原因失败了.

既然CSS声明指向了元素的一个属性,我应该尝试读取该属性吗?

javascript angularjs angularjs-e2e protractor e2e-testing

2
推荐指数
1
解决办法
2186
查看次数

如何让量角器在应用程序中间接管浏览器

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

在编写流程时,我不得不使用browser.driver代替ptor,这很有效,直到角度组件进入.现在我试图找到一种方法将ptor的初始化压缩到browser.driver并滚动特定流量后的角度.所以我有这样的事情

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

即使我超时,这似乎是在声明之后未定义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);
Run Code Online (Sandbox Code Playgroud)

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

            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, …
Run Code Online (Sandbox Code Playgroud)

angularjs-e2e protractor

2
推荐指数
1
解决办法
9670
查看次数

量角器从使用 mat-select 实现的下拉列表中选择值

我正在寻找一个量角器方法,它将从此下拉列表中选择值。下拉菜单包含 4 个值,其中之一是“Delta”。我如何从这个选择器中选择值,因为它没有任何我可以使用的选项标签。

我意识到实际选项在另一个标签下。如何选择选项?下面的似乎不起作用。

element(by.cssContainingText('mat-select-panel mat-select-content .mat-option .mat-option-text', 'Fund')) .click();

在此处输入图片说明

在此处输入图片说明

xpath css-selectors typescript angularjs-e2e protractor

2
推荐指数
1
解决办法
5768
查看次数