Angularjs Protractor元素by.model找不到元素?
-
21-12-2019 - |
题
使用元素(by.model())语法找到字段和输入文本。
元素(by.model('sample_ad.id'))。sendkeys('蝙蝠侠');
从ChromedRiver获取异常:
Stacktrace:
Error: Timed out waiting for Protractor to synchronize with the page after 11 seconds
at Error (<anonymous>)
==== async task ====
WebDriver.executeScript()
at Protractor.waitForAngular (/Users/jon/dev/project_name/node_modules/protractor/lib/protractor.js:278:22)
at Protractor.findElement (/Users/jon/dev/project_name/node_modules/protractor/lib/protractor.js:427:8)
at Object.elementFinder.(anonymous function) [as sendKeys] (/Users/jon/dev/project_name/node_modules/protractor/lib/protractor.js:62:21)
at null.<anonymous> (/Users/jon/dev/project_name/test/e2e/features/somedirectiveSpec.js:24:39)
at /Users/jon/dev/project_name/node_modules/protractor/jasminewd/index.js:54:12
==== async task ====
at null.<anonymous> (/Users/jon/dev/project_name/node_modules/protractor/jasminewd/index.js:53:12)
at null.<anonymous> (/Users/jon/dev/project_name/node_modules/protractor/node_modules/minijasminenode/lib/async-callback.js:45:37)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
.
不知道为什么这是打破,但Pratrader似乎现在很脆弱...... 我没有使用浏览器对象的问题查找元素,输入文本等...
任何帮助将欣赏
编辑:如果我将行更改为以下内容,我就可以与文本字段进行交互。 browser.driver.findElement(protractor.by.id('sample_ad_id'))。sendkeys('蝙蝠侠');
其他提示
希望这将帮助他人....
在github上发现了这个(请参阅参考链接)。我相信的问题是一个没有返回的脚本,因此sendkeys不起作用。在使用Protractor对象(元素,PTOR等)与DOM与DOM交互之前,请设置此变量:
browser.ignoreynchronization= true;
以下作品的原因是因为它不依赖于异步调用,它只需与DOM直接交互并将键插入输入字段。 browser.driver.findElement(protractor.by.id('sample_ad_id'))。sendkeys('batman');
我的电话不起作用的原因(我相信)是因为有一个没有及时返回的异步调用。
元素(by.model('sample_ad.id'))。sendkeys('蝙蝠侠');
看起来你的测试是时机。Pratractor的默认超时为11秒。
尝试为此测试设置不同的超时:
it('should override timeout', function() {
// Timeout of 30 seconds.
element(by.model('sample_ad.id')).sendKeys('batman');
}, 30000)
.
您还可以在Promractor配置文件中覆盖所有测试的超时。请参阅此示例配置文件:
https://github.com/andresdominguez/Protractor-meetup / blob / master / protractor-config.js#l19
// Inside the protractor config file.
onPrepare: function() {
// Override the timeout for webdriver.
var ptor = protractor.getInstance();
ptor.driver.manage().timeouts().setScriptTimeout(60000);
}
.