一尘不染

量角器+镀铬驱动器:元素不可点击

angularjs

嗨,我在让基本量角器测试正常工作时遇到了一些麻烦。

我的设置:

  • 我使用requirejs,所以我使用angular.bootstrap()而不是ng-app attr来初始化angular。根据量角器文档,此功能不被立即使​​用,但对于不涉及单击的测试似乎效果很好。
  • 量角器conf.json:
        "use strict";
    exports.config = {
        specs: '../E2ETests/**/*.js',
        chromeOnly: true,
        getPageTimeout: 30000,
        allScriptsTimeout: 30000
    }
  • 我使用一些包装在指令中的第三方jquery插件,我怀疑这些可能是问题的一部分。

考试:

    "use strict";
    describe('When clicking should add stuff', function () {
        var ptor;
        beforeEach(function () {
            browser.get('https://localhost/myApp');
            ptor = protractor.getInstance();
        });
        it('add stuff', function () {
            // If I comment this, the test pass. 
            element(by.id('add-stuff-button')).click();
            // This does not matter fails on the line above..
            expect(browser.getTitle()).toBeDefined();
        });
    });

错误:

UnknownError: unknown error: Element is not clickable at point (720, 881). Other element would         receive the click: <div class="col-md-5 col-md-offset-5">...</div>
(Session info: chrome=37.0.2062.124)
(Driver info: chromedriver=2.10.267521,platform=Windows NT 6.1 SP1 x86_64)

思想

chromedriver确实找到了按钮,因为如果更改ID,它将抱怨找不到元素。所以我认为问题在于按钮从其初始位置移动。由于element(***)函数应等待angular完成,因此我怀疑它的第三方插件可能会干扰,因为它们可能不使用angularapi的获取数据等。因此,angular认为已完成,但随后是第三方插件填充并移动东西。

有什么想法怎么办?如果第三方插头出了问题,我可以以某种方式告诉角度第三方材料正在进行中,然后在完成时告诉它吗?

Thx Br Twd


阅读 282

收藏
2020-07-04

共1个答案

一尘不染

您应该在配置文件中设置窗口大小

onPrepare: function() {
  browser.manage().window().setSize(1600, 1000);
}
2020-07-04