Angularjs Practor要素by.Modelは要素を見つけることができませんか?
-
21-12-2019 - |
質問
要素を使用して(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)
.
なぜこれが壊れているのかわからないが、4つの折り返しは非常に壊れやすいようです... ブラウザオブジェクトを使って要素、入力テキストなどを見つけるための問題はありません...
あらゆる助けが高く評価されるでしょう
編集:行を次のように変更した場合、テキストフィールドと対話することができます。 Browser.Driver.FindElement(Protractor.By.ID( 'sample_ad_id'))。SendKeys( 'Batman');
他のヒント
うまくいけばこれは他の人を助けるでしょう....
これをGitHubで見つけました(参考文献リンクを参照)。私が戻ってきたスクリプトであると私が信じる問題、したがって、SendKeysはうまくいきませんでした。Practorオブジェクト(要素、PTORなど)を使用してDOMと対話する前に、この変数を設定してください。
browser.ignORESYNCHRONIZATION= true;
次の作業は、非同期呼び出しに頼らないため、DOMと直接対話し、入力フィールドにキーを挿入します。 browser.driver.findelement(protractor.by.id( 'sample_ad_id'))。sendkeys( 'Batman');
私の電話がうまくいかなかった理由(私はを信じている)は、時間に戻らなかった非同期呼び出しがあるためです。
要素(by.Model( 'sample_ad.id'))。SendKeys( 'Batman');
あなたのテストがタイムアウトしているようです。PROUTRACTORのデフォルトタイムアウトは11秒です。
このテストのための別のタイムアウトを設定してみてください:
it('should override timeout', function() {
// Timeout of 30 seconds.
element(by.model('sample_ad.id')).sendKeys('batman');
}, 30000)
.
PROUTRACTOR構成ファイル内のすべてのテストのタイムアウトをオーバーライドすることもできます。このサンプル設定ファイル:
を参照してください。https://github.com/andresdominguez/Practor-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);
}
.