2012-01-11 19 views
1

私はいくつかの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 
+0

本当に 'Chr(34)'が必要ですか? –

+0

私は、 "Set elem = IE.document.get"によってちょっと混乱しています。 "set"と "ie"が必要ですか? IDが存在しない場合、エラーを投げるのは私が期待している動作です。 htaでこのコードを実行していますか? wscript?ウェブページ? cscript? – Simon

+0

それぞれの配列要素をget ElementByIdとclickメソッドに渡すときに、二重引用符文字を含めるためにChr(34)が必要であると仮定しました。 – BadGolfer

答えて

0

私は非常にばかげていない限り、存在しない要素に変数を置くことはできません。私は考えることができる

唯一のものは、追加することです:

On Error Resume Next 

初めに、それはエラーメッセージをスキップします。エラーを別々に処理する必要があるかもしれません。