2017-01-18 56 views
0

這裏有很多新的東西,一直潛伏在我的頭上多年,我被卡住了,希望有人能幫我一把。Chrome控制檯爲什麼會改變價值的建議

我想在Internet Explorer中使用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 

,它不工作。

我想簡單地控制內置控制檯網頁 在IE11使用控制檯,I型,document.getElementByID("claimNo").value = 123456;

我得到錯誤:Unable to set property 'value' of undefined or null reference

出於好奇。我將我的網頁加載到谷歌瀏覽器,並嘗試完全相同的過程,並填寫'claimNo'元素沒有問題。

有什麼我失蹤?誰能幫我?

+1

'getElementById',不'getElementByID' – trincot

+0

感謝追趕,我試了一下,在控制檯上還是同樣的錯誤。 – Crashm87

+0

我想你可能會嘗試在元素開始存在之前填充元素,導致出現錯誤消息。當您在控制檯中輸入時,您不會收到消息,因爲在您按Enter鍵併發送命令時,該頁面會完全加載。 –

回答

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

感謝您的幫助。此代碼適用於其他網頁,但似乎不想在我的主要工作網站上工作。 – Crashm87

0

嘗試:

workorder_number.innerText := 123456 

輸入單元預計從文本輸入用戶。 Internet Explorer具有內置的DOM元素.innerText比其他方法更可靠地工作,如果比.textContent慢一點,它比用於在表單中檢索和設置文本的其他方法更爲可靠。閱讀在這裏:http://perfectionkills.com/the-poor-misunderstood-innerText/

它的實例是一個形式在這裏使用:https://stackoverflow.com/a/41733944/1914172

而且OP的問題可能是因爲其他人說,該表格還沒有完全加載,即使網頁已經報道它通過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

相關問題