私はいくつかのWebページと自動的に対話するVBScriptを作成しています。私はスクリプトが予約をするためにリンクをクリックする必要がある最後のステップで問題を抱えています。各時間のリンクは、その時間が空いている場合にのみ利用可能になります。私のコードのアイデアは、最初は利用可能な最初の時間を選択することです(私はMid()とGetElementIdを使ってこれを行うことができましたが、各リンクIDの最初の7文字はわかりましたが、配列には、1日に利用可能なすべての時間のIDが含まれています。フォーム上にIDが存在しなくなるように、既に取得されているものもあります。VBScript - 配列要素をGetElementByIdに配置
私は2つの問題があります: - 。
1)getElementBy IDまたはDocument.All.Item(どちらも)のコマンドをクリックして、配列から要素を受け入れます - 私は、オブジェクトに必要なランタイムエラーが発生します。
2)getElementIdが一致するIDを見つけられない場合、単にObject Requiredエラーがスローされます。私はこれを期待していませんでした、私は自分のelem変数は何もnullではないと私はこれをテストできると思った。
誰でも私に任意のポインタを教えてもらえますか?
'This is a shortened version of my array- there are lots more times!
Times(0)="bookBtn0810"
Times(1)="bookBtn0818"
Times(2)="bookBtn0826"
Dim TimeAvail
Dim i
Dim elem
TimeAvail = "No"
i = 0
Do While (TimeAvail = "No") or (i<3)
Set elem = IE.Document.GetElementById(Chr(34) & Times(i) & Chr(34)) 'Chr(34) is to add ""
if elem is nothing then
TimeAvail = "No"
i=i+1
else
TimeAvail = "Yes"
IE.Document.All.Item(Chr(34) & Times(i) & Chr(34)).click
end if
Loop
本当に 'Chr(34)'が必要ですか? –
私は、 "Set elem = IE.document.get"によってちょっと混乱しています。 "set"と "ie"が必要ですか? IDが存在しない場合、エラーを投げるのは私が期待している動作です。 htaでこのコードを実行していますか? wscript?ウェブページ? cscript? – Simon
それぞれの配列要素をget ElementByIdとclickメソッドに渡すときに、二重引用符文字を含めるためにChr(34)が必要であると仮定しました。 – BadGolfer