Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS量角器元素by.model can';找不到元素?_Javascript_Angularjs_Protractor - Fatal编程技术网

Javascript AngularJS量角器元素by.model can';找不到元素?

Javascript AngularJS量角器元素by.model can';找不到元素?,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,使用元素(by.model())语法查找字段并输入文本 元素(by.model('sample_ad.id')).sendKeys('batman') 从chromedriver获取异常: Stacktrace: Error: Timed out waiting for Protractor to synchronize with the page after 11 seconds at Error (<anonymous>) ==== async task ===

使用元素(by.model())语法查找字段并输入文本

元素(by.model('sample_ad.id')).sendKeys('batman')

从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)
Stacktrace:
错误:等待量角器与页面同步11秒后超时
错误()
==异步任务====
WebDriver.executeScript()
位于gragrator.waitForAngular(/Users/jon/dev/project_name/node_modules/gragrator/lib/gragrator.js:278:22)
位于gragrator.findElement(/Users/jon/dev/project_name/node_modules/gragrator/lib/gragrator.js:427:8)
在Object.elementFinder.(匿名函数)[作为sendKeys](/Users/jon/dev/project\u name/node\u modules/dragrator/lib/dragrator.js:62:21)
在空。(/Users/jon/dev/project_name/test/e2e/features/somedirectiveSpec.js:24:39)
在/Users/jon/dev/project_name/node_modules/dragrator/jasminewd/index.js:54:12
==异步任务====
在空。(/Users/jon/dev/project_name/node_modules/dragrator/jasminewd/index.js:53:12)
在空。(/Users/jon/dev/project_name/node_modules/dragrator/node_modules/minijasminenode/lib/async callback.js:45:37)
at Timer.listOnTimeout[as onttimeout](timers.js:110:15)
不知道为什么会断裂,但量角器现在看起来很脆弱我在使用浏览器对象查找元素、输入文本等方面没有问题。

任何帮助都将不胜感激

编辑:如果我将行更改为以下内容,我可以与文本字段交互。
browser.driver.findElement(progrator.By.id('sample_ad_id')).sendKeys('batman')

您的测试似乎超时了。量角器的默认超时为11秒

尝试为此测试设置其他超时:

it('should override timeout', function() {
  // Timeout of 30 seconds.
  element(by.model('sample_ad.id')).sendKeys('batman');
}, 30000)
您还可以覆盖量角器配置文件中所有测试的超时。请参阅此示例配置文件:


希望这能帮助其他人

在github上找到了这个(请参阅参考链接)。我认为问题在于脚本没有返回,因此sendKeys不起作用。在使用量角器对象(元素、ptor等)与dom交互之前,请设置以下变量:

browser.ignoreSynchronization=true

以下方法之所以有效,是因为它不依赖于异步调用,它只是直接与dom交互并将键插入到输入字段中。 browser.driver.findElement(gragrator.By.id('sample_ad_id')).sendKeys('batman')

我的呼叫不起作用的原因(我相信)是因为有一个异步呼叫没有及时返回。
元素(by.model('sample_ad.id')).sendKeys('batman')

参考资料:

请参见


有关超时的详细信息。

使用此选项后-超时时间比以前长很多。。。据我所知,这不是超时问题-是ptor函数无法在超时之前完成执行。。。我猜他们永远不会结束。只是不知道为什么…我发现有人编写了一个使用超时的控制器,在$timeout(function(){…})中它调用了一个创建循环的函数(基本上模仿$interval)。。。我将此切换到interval,不再需要使用browser.ignoreSynchronization=true
// Inside the protractor config file.
onPrepare: function() {
  // Override the timeout for webdriver.
  var ptor = protractor.getInstance();
  ptor.driver.manage().timeouts().setScriptTimeout(60000);
}