タブのクリックの方法について
未読分:11件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#11 2015年4月2日(木)08時28分 From: VBAマスター | 返事 削除 変更 |
> If objIE.document.getElementsByTagName("span")(i).innerText = "1 分" Then > の部分で、 > > 「オブジェクト変数またはWithブロック変数が設定されていません。」 > となってしまいます。 オブジェクト変数が設定されていないということは、おそらくobjIEのオブジェクト変数が設定されていないということです。 ウォッチウィンドウを利用して「objIE」がどの時点で設定解除されているのか確認してみてください。 |
Message#10 2015年3月31日(火)16時09分 From: ぴぃスケ | 返事 削除 変更 |
1回目の処理では無事、選択出来ました。 Application.OnTime で再度同じ処理(subプロシージャ)を呼び出すと、 If objIE.document.getElementsByTagName("span")(i).innerText = "1 分" Then の部分で、 「オブジェクト変数またはWithブロック変数が設定されていません。」 となってしまいます。 objIEは Public objIE As New InternetExplorer 'IEオブジェクト を冒頭で宣言したものを使いまわしています。 アドバイス頂いたのをそのままテストしています。 'span要素を全て抽出 For i = 0 To objIE.document.getElementsByTagName("span").Length - 1 If objIE.document.getElementsByTagName("span")(i).innerText = "1 分" Then objIE.document.getElementsByTagName("span")(i).Click End If Call ieCheck(objIE) 'Exit For Next i 引き続きアドバイス、情報提供をお待ちしています。 |
Message#9 2015年3月30日(月)09時17分 From: ばばぞの | 返事 削除 変更 |
おーーーー 気になっていたので試していたら、1分選択できとるやないですかー こうやればいいのかと感心した次第ですw |
Message#8 2015年3月28日(土)18時51分 From: ぴぃスケ | 返事 削除 変更 |
最後の「1分」をクリックすれば良さそうですね。 土日は動作確認できないので、週明けに確認してみますね。 VBAマスターのメッセージ(#7)への返事 > > spanというものに対して「1分」というのを検索して一致したらクリックという感じのソースコードに見えますが、この中に「1分」は複数回出現しているという認識でいたので、どの「1分」をクリックするのかな?と思っていました。 > > 生成されたHTMLだと1個だったのでしょうか?? > > よく見てなかったですが、たしかに2つありますね。 > > 最後のやつが表示されている「1分」のやつっぽいので「Exit For」を削除すれば最後の「1分」がクリックされます。 > > Sub test() > > Dim objIE As InternetExplorer > > Call ieView(objIE, "http://jp.demo.highlow.net/Account/QuickDemoLogin?language=ja-JP") > > objIE.document.getElementById("FixedPayoutHLOOD").Click 'クリック > > Call ieCheck(objIE) > > 'span要素を全て抽出 > For i = 0 To objIE.document.getElementsByTagName("span").length - 1 > > If objIE.document.getElementsByTagName("span")(i).innerText = "1 分" Then > > objIE.document.getElementsByTagName("span")(i).Click > > Call ieCheck(objIE) > > 'ループ解除削除 > 'Exit For > > End If > > Next i > > End Sub > > ただし、参考URL自体が現在データがない状態で表示されているので、正常に表示されるかは確認できませんでした。 > > とりあえず表示上は「1分」が黄色背景で選択されているように見えますが。 |
Message#7 2015年3月28日(土)10時14分 From: VBAマスター | 返事 削除 変更 |
> spanというものに対して「1分」というのを検索して一致したらクリックという感じのソースコードに見えますが、この中に「1分」は複数回出現しているという認識でいたので、どの「1分」をクリックするのかな?と思っていました。 > 生成されたHTMLだと1個だったのでしょうか?? よく見てなかったですが、たしかに2つありますね。 最後のやつが表示されている「1分」のやつっぽいので「Exit For」を削除すれば最後の「1分」がクリックされます。 Sub test() Dim objIE As InternetExplorer Call ieView(objIE, "http://jp.demo.highlow.net/Account/QuickDemoLogin?language=ja-JP") objIE.document.getElementById("FixedPayoutHLOOD").Click 'クリック Call ieCheck(objIE) 'span要素を全て抽出 For i = 0 To objIE.document.getElementsByTagName("span").length - 1 If objIE.document.getElementsByTagName("span")(i).innerText = "1 分" Then objIE.document.getElementsByTagName("span")(i).Click Call ieCheck(objIE) 'ループ解除削除 'Exit For End If Next i End Sub ただし、参考URL自体が現在データがない状態で表示されているので、正常に表示されるかは確認できませんでした。 とりあえず表示上は「1分」が黄色背景で選択されているように見えますが。 |
Message#6 2015年3月27日(金)23時11分 From: ぴぃスケ | 返事 削除 変更 |
ご回答ありがとうございます。 spanというものに対して「1分」というのを検索して一致したらクリックという感じのソースコードに見えますが、この中に「1分」は複数回出現しているという認識でいたので、どの「1分」をクリックするのかな?と思っていました。 生成されたHTMLだと1個だったのでしょうか?? ブラウザの画面上では1分は1個ですが。 > <div class="tab" style="display: none;"><span>1 分</span></div> この"display: none;"があるのと無いのがあるのが気になっています。 引き続きアドバイスいただけましたら助かります。 VBAマスターのメッセージ(#4)への返事 > あまり見れていないけど・・・・ > とりあえず以下で「1分」のクリック自体はできている模様。 > ただ、なぜか「オプションは現在閉鎖されています」と出ます。 > > Sub test() > > Dim objIE As InternetExplorer > > Call ieView(objIE, "http://jp.demo.highlow.net/Account/QuickDemoLogin?language=ja-JP") > > objIE.document.getElementById("FixedPayoutHLOOD").Click 'クリック > > Call ieCheck(objIE) > > 'span要素を全て抽出 > For i = 0 To objIE.document.getElementsByTagName("span").Length - 1 > > If objIE.document.getElementsByTagName("span")(i).innerText = "1 分" Then > > objIE.document.getElementsByTagName("span")(i).Click > > Call ieCheck(objIE) > > Exit For > > End If > > Next i > > End Sub > > 本来のソースは以下のようになっており > > <script type="text/html" id="template-categoryLayout"> > <div id="assetsCategoryFilterZoneRegion" class="filtersArea"></div> > </script> > > div括りの中でjavascriptを利用して > > <div class="tab" style="display: none;"><span>1 分</span></div> > > が生成されているっぽいですね。 > > ですので、クリック自体はできてもその後の表示処理もjavascriptで行っているため、 > 単純なクリック処理ではうまく表示されないのかもしれません。 > > こうなると今度はjavascriptの処理まで全て見ていく形になります。 > さらにjQueryなんかを利用していた場合そこまで掘り下げてみていく必要があるかと思います。 > > ざっと見た感じの情報ですが。。。 |
Message#5 2015年3月27日(金)09時47分 From: VBAマスター | 返事 削除 変更 |
念のため以下のようにすると1分部分を抽出しているのが確認できます。 If objIE.document.getElementsByTagName("span")(i).innerText = "1 分" Then msgBox objIE.document.getElementsByTagName("span")(i).outerHTML End If ちなみにspan要素の親要素であるdivをクリックしたらどうかと思ってやってみましたが結果は同じでした。 親要素をクリックする場合は以下のように記述します。 '親要素のdiv要素をクリック objIE.document.getElementsByTagName("span")(i).parentElement.Click |
Message#4 2015年3月27日(金)09時44分 From: VBAマスター | 返事 削除 変更 |
あまり見れていないけど・・・・ とりあえず以下で「1分」のクリック自体はできている模様。 ただ、なぜか「オプションは現在閉鎖されています」と出ます。 Sub test() Dim objIE As InternetExplorer Call ieView(objIE, "http://jp.demo.highlow.net/Account/QuickDemoLogin?language=ja-JP") objIE.document.getElementById("FixedPayoutHLOOD").Click 'クリック Call ieCheck(objIE) 'span要素を全て抽出 For i = 0 To objIE.document.getElementsByTagName("span").Length - 1 If objIE.document.getElementsByTagName("span")(i).innerText = "1 分" Then objIE.document.getElementsByTagName("span")(i).Click Call ieCheck(objIE) Exit For End If Next i End Sub 本来のソースは以下のようになっており <script type="text/html" id="template-categoryLayout"> <div id="assetsCategoryFilterZoneRegion" class="filtersArea"></div> </script> div括りの中でjavascriptを利用して <div class="tab" style="display: none;"><span>1 分</span></div> が生成されているっぽいですね。 ですので、クリック自体はできてもその後の表示処理もjavascriptで行っているため、 単純なクリック処理ではうまく表示されないのかもしれません。 こうなると今度はjavascriptの処理まで全て見ていく形になります。 さらにjQueryなんかを利用していた場合そこまで掘り下げてみていく必要があるかと思います。 ざっと見た感じの情報ですが。。。 |
Message#3 2015年3月26日(木)13時41分 From: ぴぃスケ | 返事 削除 変更 |
続きです。 下記のソースコードで、 IE起動→スプレッドオンデマンドの選択までできました。 その後の時間を選択するところでつまづいています。 Sub Macro1() ' ' Macro1 Macro ' IE.Visible = True 'ブラウザ表示 IE.Navigate2 "http://jp.demo.highlow.net/Account/QuickDemoLogin?language=ja-JP" 'ハイローのログイン画面 While (IE.Busy = True) Or (IE.readyState < READYSTATE_COMPLETE) '表示待ち DoEvents Wend IE.document.getElementById("FixedPayoutHLOOD").Click 'クリック End Sub 下記のHTMLの「1分」を選択したいのです。 assetsCategoryFilterZoneRegionというIDの部分の下の1分の所をクリックするようなソース コードを記述したいのですが・・・ <div class="tab" style=""> <span> 1 分 </span> </div> どんな記述をしたら良いでしょうか?? <section id="categoryRegion"> <div> <div id="assetsCategoryFilterZoneRegion" class="filtersArea"> <div> <div class="tab" style="display: none;"></div> <div class="tab" style="display: none;"> <span> 全て </span> </div> <div class="tab" style="display: none;"> <span> 全て </span> </div> <div class="tab first selected" style=""> <span> 全て </span> </div> <div class="tab" style="display: none;"> <span> 15分 </span> </div> <div class="tab" style="display: none;"> <span> 1時間 </span> </div> <div class="tab" style="display: none;"> <span> 1日 </span> </div> <div class="tab" style="display: none;"> <span> 15分 </span> </div> <div class="tab" style="display: none;"> <span> 1時間 </span> </div> <div class="tab" style="display: none;"> <span> 1日 </span> </div> <div class="tab" style="display: none;"> <span> 1 分 </span> </div> <div class="tab" style="display: none;"> <span> 3 分 </span> </div> <div class="tab" style="display: none;"> <span> 5 分 </span> </div> <div class="tab" style=""> <span> 1 分 </span> </div> <div class="tab" style=""> <span> 3 分 </span> </div> <div class="tab last" style=""> <span> 5 分 </span> </div> </div> </div> </div> </section> <div id="assetsCategoryFilterZoneRegion" class="filtersArea"> <div> <div class="tab" style="display: none;"></div> <div class="tab" style="display: none;"> <span> 全て </span> </div> <div class="tab" style="display: none;"> <span> 全て </span> </div> <div class="tab first selected" style=""> <span> 全て </span> </div> <div class="tab" style="display: none;"> <span> 15分 </span> </div> <div class="tab" style="display: none;"> <span> 1時間 </span> </div> <div class="tab" style="display: none;"> <span> 1日 </span> </div> <div class="tab" style="display: none;"> <span> 15分 </span> </div> <div class="tab" style="display: none;"> <span> 1時間 </span> </div> <div class="tab" style="display: none;"> <span> 1日 </span> </div> <div class="tab" style="display: none;"> <span> 1 分 </span> </div> <div class="tab" style="display: none;"> <span> 3 分 </span> </div> <div class="tab" style="display: none;"> <span> 5 分 </span> </div> <div class="tab" style=""></div> <div class="tab" style=""> <span> 3 分 </span> </div> <div class="tab last" style=""> <span> 5 分 </span> </div> </div> </div> </div> </section> |
Message#2 2015年3月26日(木)04時57分 From: スカイラインがほしい | 返事 削除 変更 |
どう書いたらいいかより一度自分で書いてみて分からないところを聞かないとこの先したいことなんて絶対できないと思うぜ? ↓のページを参考に自分で作ってみるがよろし。 http://www.vba-ie.net/ie/navigate.html http://www.vba-ie.net/element/getelementsbytagname.html ここのサイトは本当に勉強になる。 管理人さんに感謝だね! |
Message#1 2015年3月25日(水)02時04分 From: ぴぃスケ | 返事 削除 変更 |
下記のバイナリーオプションのサイトの検証用に自動操作を行おうと思っています。 http://jp.demo.highlow.net/ まずは、手始めに、「ON DEMAND」タブをクリック 次に、「1分」をクリック 通貨のセレクトボックスに任意の通貨を選択 金額を入力 HIGH、LOWを選択、エントリーという流れを作ろうと思いますが、 最初の「ON DEMAND」をクリックするにはどの様なソースコードを記入すれば良いでしょうか? ちなみに、下記HTMLソースの <span id="ChangingStrikeOOD" class="highlow"> このChangingStrikeOODに対してクリック操作が出来ればいいのかな?と思うのですが、 VBAのソースコードだとどんな感じになるのでしょうか?? ご教授いただけたら嬉しいです。 <section id="gameTypeRegion"> <div> <div id="gameTabArea" class="gameTabArea"> <div id="assetsGameTypeZoneRegion"> <ul> <li class="gameTab"> <span id="FixedPayoutHL" class="highlow"> スプレッドHIGH/LOW </span> </li> <li class="gameTab"></li> <li class="gameTab"> <span id="ChangingStrikeOOD" class="highlow"> ON DEMAND </span> </li> <li class="gameTab selected"> <span id="FixedPayoutHLOOD" class="highlow"></span> </li> </ul> </div> </div> </div> </section> 以上です、よろしくおねがいいたします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降