こんにちは。 テストの目的で、入力フィールドに100000文字を挿入する必要があります。 問題は、 sendKeys()がそのような量のデータを処理できず、ブラウザーがフリーズすることです。 テキストフィールドへの入力データを開始し、しばらくすると応答が停止し、タイムアウトのためにテストが失敗します。
この問題を解決するために、ファイルをいくつかの部分に分割するなど、さまざまな方法を試しましたが、30000文字も処理できません。
手動でテキストエディタからそのフィールドにデータをコピーして貼り付けるだけで、正常に機能します。
誰かがテキストフィールドに100000文字を挿入する方法を持っていますか?
ありがとうございました!
コード:
var fs = require( 'fs');
var path = require( 'path');
var filePath = path.join(__ dirname、 'datafile.json');
var data = require(filePath)
browser.findElement(By.tagName( "textarea"))。sendKeys(data.cbb);
browser.sleep(5000);
browser.findElement(By.name( "Submit"))。click();
WebDriverのsendKeysは、実際には100,000回のキー押下を処理することを目的としていません。 イベントをネイティブにシミュレートするため、個々のキャラクターごとに個別のリクエストを送信します。
ブラウザで実行されるJavaScriptを介してテキストを直接設定することで、これを回避できると思います。
browser.executeScript('findMyTextarea.textContent="myreallyreallylongstring"');
サポートの質問として締めくくる-このような一般的なサポートの質問は、適切なサポートチャネルに転送してください。https://github.com/angular/protractor/blob/master/CONTRIBUTING.md#questionsを参照して
私はこのコードでこの問題を解決しました:
var data = fs.readFileSync(filePath,'utf8')
var element = browser.findElement(By.tagName("textarea"));
browser.executeScript("arguments[0].value = arguments[1];", element, data);
ご協力ありがとうございました! :+1: