2017-01-18 1 views
0

ここに新しいものがあり、何年も翼に潜んでいて、誰かが私に手を差し伸べることを望んでいる。Chromeコンソールで値が変更される理由についてのアドバイス

私は、インターネットエクスプローラでAutoHotKeyのためのDOMを使用して作業のための繰り返しタスクを自動化しようとしています。私は私の人生のために私の '番号'をIEの要素に記入することはできません。

私はIE 11を使用しています。

<input name="claimNo" class="bodyText" id="claimNo" type="Text" size="10" maxlength="6" value="" lpcachedvisval="1" lpcachedvistime="1484754693"> 

私は

#SingleInstance force 

wb := ComObjCreate("InternetExplorer.Application") 
wb.Visible := true 
wb.Toolbar := False 
wb.Navigate("work_URL") 


while (wb.readystate!=4) 

Sleep, 100 

Sleep, 1000 

workorder_number := wb.document.getElementById("claimNo") 

workorder_number.Value := 123456 

、テストするための基本的なスクリプトを書いてみました、それが動作しません。

私は単純に建てコンソールでWebページを制御しようとした IE11でコンソールを使用して、I型、document.getElementByID("claimNo").value = 123456;

私はエラーを取得:。好奇心のうちUnable to set property 'value' of undefined or null reference

。私は自分のウェブページをGoogle Chromeに読み込み、全く同じプロセスを試してみましたが、「claimNo」要素に問題はありません。

紛失しているものがありますか?誰でも助けてくれますか?

+1

'getElementById'、ない' getElementByID' – trincot

+0

おかげで、私はそれを試してみましたが、コンソールにまだ同じエラー。 – Crashm87

+0

私はあなたが得るエラーメッセージにつながる、要素が既存のものを始める前に、あなたが要素を埋めることを試みているかもしれないと思う。あなたが入力してコマンドを送信するまでにページが完全にロードされているため、コンソールにメッセージを入力してもメッセージは表示されません。 –

答えて

0

私が働いている、AHKの最新バージョン(1.1.24.04)を設置し、これを書いた:

#u:: 
wb := ComObjCreate("InternetExplorer.Application") 
wb.Visible := true 
wb.Toolbar := False 
wb.Navigate("whatever URL") 
while (wb.busy or wb.ReadyState != 4) 
    Sleep, 100 
workorder_number := wb.document.getElementById("whateverFieldID") 
workorder_number.Value := 123456 
return 

Basic Webpage Controls with JavaScript/COM

+0

あなたのお手伝いを心より感謝します。このコードは他のWebページでも動作しますが、私の主要な仕事のWebサイトでは動作しないようです。 – Crashm87

0

試してみてください。

workorder_number.innerText := 123456 

Elementはからのテキスト入力を期待入力をユーザー。 Internet Explorerには、DOM要素の.innerTextが組み込まれています。これは、.textContentより少し遅い場合は、フォーム内のテキストを取得して設定する他の方法よりも確実に機能します。ここではそれについて読む:OPの問題は他の誰かがウェブページを報告している場合でも、フォームが完全にロードされていないことを、述べたようにあるかもしれない。またhttps://stackoverflow.com/a/41733944/1914172

:それのhttp://perfectionkills.com/the-poor-misunderstood-innerText/

例はこちらのフォーム上での使用ですそれがReadyState経由で終了した場合、生成されたページコンテンツにはない可能性があります。このため周りの作業はとても似ている:それをキャッチするため

#SingleInstance force 

wb := ComObjCreate("InternetExplorer.Application") 
wb.Visible := true 
wb.Toolbar := False 
wb.Navigate("work_URL") 


while (wb.busy or wb.ReadyState != 4) 
    sleep 100 

Sleep, 1000 

workorder_number := wb.document.getElementById("claimNo") 

ComObjError(False) 
while (workorder_number.innerText == "") 
    workorder_number.innerText := 123456 
ComObjError(True) 
+0

コードスニペットを説明してください。 – bfontaine

+0

innerHTMLの結果は、新しいコードのスニペットがあってもなくても、同じエラーが表示されます。私はこのコードを他のウェブサイト(UPSにログインして出荷を作成する)で作業していますが、このサイトは自分のコードを受け入れたくありません。 – Crashm87

+0

私はフレームに私の問題を供給したと思います。私はそれらを理解していない。私のウェブページ上の特定のフレームにアクセスするのを手助けすることができますか?私のコードはうまくいくと思います。 – Crashm87

関連する問題