twD*_*uke 32 selenium-chromedriver angularjs protractor
嗨,我在使用基本量角器测试时遇到一些麻烦.
我的设置:
量角器conf.json:
"use strict";
exports.config = {
specs: '../E2ETests/**/*.js',
chromeOnly: true,
getPageTimeout: 30000,
allScriptsTimeout: 30000
}
Run Code Online (Sandbox Code Playgroud)考试:
"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();
});
});
Run Code Online (Sandbox Code Playgroud)
错误:
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)
Run Code Online (Sandbox Code Playgroud)
思考
chromedriver确实找到了按钮,因为如果我更改id,它会抱怨没有找到任何元素.所以我认为问题是按钮从初始位置移开.由于元素(***)函数应该等待角度完成,我怀疑它可能会干扰它的第三方插件,因为它们可能不会使用角度api的获取数据等.所以有角度认为它完成但是然后第三方插件填充和移动周围的东西.
有什么想法怎么办?如果第三方插件是问题,我可以以某种方式告诉角度第三方的东西正在进行,然后告诉它何时完成?
Thx Br Twd
Gal*_*lit 30
您应该在配置文件中设置窗口大小
onPrepare: function() {
browser.manage().window().setSize(1600, 1000);
}
Run Code Online (Sandbox Code Playgroud)
Ama*_*pta 20
以下对我来说很好:
browser.actions().mouseMove(element).click();
Run Code Online (Sandbox Code Playgroud)
编辑:如果上面不起作用尝试链接perform()方法(我把它作为编辑建议,我没有测试它,但有人可以验证它和评论)
browser.actions().mouseMove(element).click().perform();
Run Code Online (Sandbox Code Playgroud)
ori*_*nof 12
如果chrome窗口太小,会发生这种情况,尝试在beforeEach中添加
browser.driver.manage().window().setSize(1280, 1024);
Run Code Online (Sandbox Code Playgroud)
Rau*_*ban 12
或者只是使用Actions类:
browser.actions().mouseMove(elem).click().perform();
Run Code Online (Sandbox Code Playgroud)
有同样的问题,但与窗口大小无关,但必须等待 ngAnimation 结束。
所以我不得不等到元素可以点击。
const msg = 'Waiting for animation timeout after 1s';
const EC = new protractor.ProtractorExpectedConditions();
await browser.wait(EC.elementToBeClickable(model.elements.button.checkCompliance), 1000, `${msg} panel`);
await model.elements.button.checkCompliance.click();
Run Code Online (Sandbox Code Playgroud)
@note - 我正在使用 async/await 节点 8 功能,您也可以将其转换为常规 Promise。也使用ProtractorExpectedConditions而不是ExpectedConditions 查看文档
| 归档时间: |
|
| 查看次数: |
39625 次 |
| 最近记录: |