0

質問者としてstackoverflowに参加するのはこれが初めてなので、ここに行きます。

在庫の追跡に使用されるサードパーティの Web サイトを自動的に更新するプロジェクトを実装しようとしています。在庫の調整に関連するクライアント側の JavaScript 関数を呼び出す方法を理解しましたが、現在のところ、この関数は、データを処理する前にデータに対して簡単な計算と検証を行うためにユーザー入力を要求します。システムを自動化する必要があるので、私のような初心者のプログラマーが簡単に実装できるアイデアがあれば、それは素晴らしいことです。

現在のアクティブなハンドルへの sendKeys のようなずさんなソリューションでさえ、現時点では私のニーズに合っています。お時間をいただき、ご検討いただきありがとうございます。

敬具、ベン

Java Script 関数は次のとおりです。

function stockValMod(fieldID, doAdd){
var txtField = document.getElementById(fieldID);
if(isNumeric(txtField.value)){
if(doAdd){
var addNum = prompt('Enter the amount you wish to add', 0);
if(!isNumeric(addNum)) alert('You did not enter a valid number');
}else{
var addNum = prompt('Enter the amount you wish to subtract', 0);
if(!isNumeric(addNum)){
alert('You did not enter a valid number');
}else{
addNum = (-1 * addNum);
}
}
if(isNumeric(addNum)){
txtField.value = parseInt(txtField.value) + parseInt(addNum);
txtField.style.backgroundColor = 'lightblue';
document.getElementById('saveButtonTD').style.display = '';
}
}else{
alert('The current value is not a valid number');
}
}

vs の私のコードは、この時点までは非常に短く、次の数行のコードを使用して、C# コードからこの Java 関数を呼び出す方法がわかりました...

int numToSubtract = 10;
object[] args = { "part_182", 1 };
object[] args2 = { "part_182", 10 };
webBrowser1.Document.InvokeScript("stockValMod",args);

これは素晴らしい関数を呼び出しますが、javascriptプロンプトからの呼び出しからポップアップウィンドウが表示されます....プログラムからそのテキストフィールドにデータを入力する方法を見つけることができないようです。

アップデート.....

だから私は使用できることがわかりました:

webBrowser1.Document.Window.Prompt("haha", "1");

WebブラウザでJavaがトリガーするものとまったく同じプロンプトを取得します。Java からのリクエストをインターセプトして、プロンプトを呼び出すようにダンプできれば、デフォルトを設定して Enter キーストロークを送信して、これをハッキングできます...しかし、ブラウザの Java リクエストをインターセプトしてプロンプトを表示するにはどうすればよいですか?? うーん.....

こんにちは....更新....

何時間にもわたる検索とフレットの末に判明したのは... 必要なことを達成するには、たった 1 行のコードしかありませんでした。

foreach (HtmlElement form in webBrowser1.Document.Forms)form.InvokeMember("submit");

これにより、サーバーは問題なく更新されました。でも、助けてくれてありがとう!:D

敬具、ベン

4

0 に答える 0