VBで特定のリンクをクリックしたく様々なソースを見て似たような記述は数多く見かけたのですが、私のクリックしたいリンクが特殊でどうもうまくクリック出来ません。

このQ&Aのポイント
  • Visual Studio、Windowsフォームアプリケーションを利用して特定のリンクをクリックしたいです。リンク先は画像であり、画像名が存在しません。リンクの属性値が「menu_cate」「new.html」という値である場合にクリックを実行したいです。
  • VBを使用して特定のリンクをクリックしたいですが、リンク先の要素は画像であり、画像名がないため困っています。リンクの属性値が「menu_cate」「new.html」という値である場合にクリックを実行したいです。
  • Visual Basicを使用して特定のリンクをクリックしたいです。リンク先は画像であり、画像名が存在しないため、クリックする方法がわかりません。リンクの属性値が「menu_cate」「new.html」という値である場合にクリックを実行したいです。
回答を見る
  • ベストアンサー

name テキスト 画像名等が無いリンクをクリック

VBで特定のリンクをクリックしたく様々なソースを 見て似たような記述は数多く見かけたのですが、 私のクリックしたいリンクが特殊でどうもうまく クリック出来ません。 ■Visual Studio、Windowsフォームアプリケーション利用 ■クリックしたいリンクについて ・<li class="menu_cate"><a href="new.html" title="NEWページ"></a></li> 「リンク詳細」 リンク先は画像となっており、画像名がありません。 li class、a href それぞれの値(menu_cate、new.html)は、共にページ内では1つだけです。 上記のリンクをクリックしたいので、「menu_cate」、「new.html」、「NEWページ」のいずれかを 検知してクリックをしたいと思い下記を記述してみたのですがうまくいきません。 是非どなたかご教授くださいますようお願い致します。 Dim Element As HtmlElement = Nothing For Each Element In WebBrowser1.Document.All.GetElementsByName("A") If Element.InnerText = "NEWページ" Then Element.InvokeMember("Click") 'クリックする Exit For End If Next ※Element.InnerTextの部分は色々変えてみたのですが、 リンクできませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

If Not TypeName(sender) = "WebBrowser" Or e.Url <> myUrl Then Exit Sub End If ID や パスワードを入力している画面とリンクをクリックしたい画面は違いますよね。 .Document.All.GetElementsByName("submit")(0).InvokeMember("click") 上記を実行したら、どこか違う URL の画面に移動しませんか? (ここまではできているのですよね。) その時に myUrl がそのままなら、 For Each Element In WebBrowser1.Document.GetElementsByTagName("A") は実行されませんよ。 myUrl="下記をクリックしたら表示される URL" に書き換えておかないと .Document.All.GetElementsByName("submit")(0).InvokeMember("click")

ss33bgzm
質問者

お礼

ご指摘いただきありがとうございます。

ss33bgzm
質問者

補足

再度のご回答誠にありがとうございます。 はい、ID、パスワードを入力している画面と クリックしたい画面は違いまして、 .Document.All.GetElementsByName("submit")(0).InvokeMember("click") を実行しますと違うURLに移動します。 昨日、色々 myUrl="クリックしたら表示される URL" にするために孤軍奮闘しておったのですが、 myUrlに新しいUrlを代入することがうまくいきません。 と言いますよりも、デバッグするとエラー表示には ならないのですがログインした状態で何も動かず、 といった状況です。 一般的なVBの参考書も購入し1から見直しているのですが、 本当に簡単なイベントハンドラや1つのみの プロシージャの処理などは多少理解は 出来るのですが、今回のような連続して処理? するような記述方法がほとんど掲載されておらず ググってみても出来ませんでした。 普通の方であれば、1つ1つの処理を理解すれば、 合わせて総合的なコードが書けるのかと思いますが、 私はそこの理解がとても低いのだと感じます。 申し訳ございません。 myUrl に新たにUrlを代入し、クリックさせるには プロシージャ内での記述方法は最初の処理の Private Sub Form1_Load とは違うと思うのですがどのようなプロシージャに なるのでしょうか? 何度もお伺いし誠に申し訳ありませんが、 何卒、ご教授いただけますと幸いでございます。

その他の回答 (1)

回答No.1

>For Each Element In WebBrowser1.Document.All.GetElementsByName("A") ではなく For Each Element In WebBrowser1.Document.GetElementsByTagName("A") なら If Element.InnerText = "new.html" Then で取得できるはずですが。 もし取得できないようなら、その URL を教えて下さい。こちらでも試してみます。 ※ ご使用の詳しい環境を書くようにして下さい。   (コードから .NET 系のバージョンとは推測できるのですが、ここは、.NET 系なら   どのバージョンでもVB.NET と書く人が多いので、本来は、VB.NET と書くと   VB.NET 2003を指しVB2005 以降と区別されます。) 因みに、VB2010 / IE 9 / Windows 7 で動作確認

参考URL:
http://hanatyan.sakura.ne.jp/patio/read.cgi?no=314
ss33bgzm
質問者

お礼

ご回答いただきありがとうございます。

ss33bgzm
質問者

補足

こんなにもお早いご回答をいただきまして 誠にありがとうございます。 本当に感謝しております。 同時に小生の薄い知識が原因で環境の詳細を 書かずに申し訳ございませんでした。 小生の分かる範囲で記載させて頂きます。 記載方法に誤りがあるかもしれませんが、 ご容赦ください。 ご指導いただけますと幸いでございます。 ■環境 Windows7 IE9 Visual Studio Ultimate 2012 Microsoft Visual Basic 2012 Microsoft .NET Framework Version 4.5.5 こちらで合っていますでしょうか? 尚、URLにつきましては先方にも ご迷惑が掛かる可能性もございますので、 控えさせて頂けますと幸いでございます。 ■全コード Public Class Form1 Private myUrl As Uri Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load WebBrowser1.ScriptErrorsSuppressed = True myUrl = New System.Uri("http://hogehoge.com") WebBrowser1.Url = myUrl End Sub Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _ Handles WebBrowser1.DocumentCompleted If Not TypeName(sender) = "WebBrowser" Or e.Url <> myUrl Then Exit Sub End If With WebBrowser1 .Document.GetElementById("email").SetAttribute("Value", "hogehoge") .Document.GetElementById("password").SetAttribute("Value", "hogehoge") .Document.All.GetElementsByName("submit")(0).InvokeMember("click") End With Dim Element As HtmlElement = Nothing For Each Element In WebBrowser1.Document.GetElementsByTagName("A") If Element.InnerText = "new.html" Then Element.InvokeMember("Click") 'クリックする Exit For End If Next End Sub ■行いたいこと Windowsフォームアプリケーションで 1)Basic認証?のHPにアクセス 2)ID、PASSを自動入力 3)特定のリンクをクリック ← 今ここで悩んでます。 度々のご質問で誠に申し訳ございませんが、 知り得る範囲でも結構でございますので、 何卒、お力をお貸し頂ければと思います。

関連するQ&A

  • クリックで表示、非表示するメガメニュー

    クリックで表示して再度クリックすると非表示になるメガメニューを作ろうと思ってます。 下記のページを参考にjQueryでマウスオーバーによるメガメニューは作成しました。 http://www.skuare.net/test/jmegadropdown.html ただ、jQueryどころかjavascriptも昔少しやった程度しか知識がありませんので、ソースはほぼ上記のページと同じです。 これをクリックでメニュー表示して、再クリックで非表示にするにはどうしたらよいでしょうか? 具体的にはマイクロソフトのページの上にあるようなメニューです。 http://www.microsoft.com/ja-jp/default.aspx 自分の今の知識でjavascriptを使って書いたコードは下記のとおりです。 このように書いていけば出来るとは思うのですが、もっと効率よく出来る方法はあるでしょうか? よろしくお願いします。 function test1() { $("#topnav li .products1 .sub").toggle(); $("#topnav li .sale1 .sub").css("display", "none"); } function test2() { $("#topnav li .products1 .sub").css("display", "none"); $("#topnav li .sale1 .sub").toggle(); } <ul id="topnav"> <li> <a href="#" class="products" onclick="test1()">Products</a> <div class="products1"> <div style="opacity: 0; display: none; width: 600px;" class="sub"> <ul> <li><h2><a href="#">menu1</a></h2></li> <li><a href="#">Link1</a></li> <li><a href="#">Link2</a></li> </ul> <ul> <li><h2><a href="#">menu2</a></h2></li> <li><a href="#">Link1</a></li> <li><a href="#">Link2</a></li> </ul> </div> </div> </li> <li> <a href="#" class="sale" onclick="test2()">Sale</a> <div class="sale1"> <div style="opacity: 0; display: none; width: 450px;" class="sub"> <ul> <li><h2><a href="#">menu</a></h2></li> <li><a href="#">Link - 1</a></li> <li><a href="#">Link - 2</a></li> <li><a href="#">Link - 3</a></li> <li><a href="#">Link - 4</a></li> </ul> </div> </div> </li>

  • クリックした<a>タグのみにClass名を付けたい

    複数ある<a>タグの内、クリックした一つだけにClass名を付けたい場合はどうすればよいでしょうか? ソースは以下のようになっています。 <ul id="menu"> <li><a href="#">北海道</a></li> <li><a href="#">東北</a></li> <li><a href="#">関東</a></li> </ul> 「北海道」をクリックした場合 <a href="#" class="check">北海道</a> となり 次に「東北」をクリックした場合は <a href="#" class="check">東北</a> となる そのさい「北海道」についていた class="check" は外れる。 といった事をしたいのです。 現状、jQueryで以下のようにしたはいいのですが、複数にclass="check"が付いてしまい、希望の動作になりませんでした。 <script type="text/javascript"> $(document).ready(function(){ $("#menu li a").click(function () { $(this).toggleClass("check"); }); }); </script> ぜひ、お教えいただければと思います。 よろしくお願いいたします。

  • jqueryによるクリック時のclass名追加

    サイドバーのメニューをクリックした際にどのページか分かるように、クリックしたリンクの色を変えたいと思います。 例えばページAリンクをクリックした際にliタグにid=selectを追加し、 他のリンクにもしid=selectがついている場合は、削除するという処理を jQueryで行いたいのですが、どのように記述すればよろしいでしょうか? 分かる方、ご教授お願いします>< ■HTML ----------------------------------- <div id="sidebar"> <ul> <li><a href="">ページA</a></li> <li><a href="">ページB</a></li> <li><a href="">ページC</a></li> <li><a href="">ページD</a></li> </ul> </div> ■CSS ----------------------------------- #sidebar li a { color: #F00; } #select a { color: #0F0; }

  • 【jQuery】領域外をクリックでメニューを閉じる

    質問させて頂きます。 現在、webサイトを制作しておりまして、 メニューボタンを押すとメニューが開閉されるものを作ろうとしております。 色々調べて試行錯誤しているのですが、なかなかうまくいきません。 下に記述のものは、現在の状態です。 メニューの開閉はできるのですが、閉じるためには再度メニューボタンを押さなければなりません。(メニューの中のリンクを押しても表示されたままです) これをどこかしらクリックで閉じる様にしたいのですが、 どうすればいいでしょうか。 ちなみにメニューボタンで動作を行うのはスマホ用で、 PC版は通常のスティッキーヘッダーメニューのレスポンシブでの切り替えです。 [ html ] <header id="top-head"> <div class="inner"> <span class="menu-toggle">メニュー</span> <nav id="global-nav"> <ul> <li><a href="#1へのリンク">メニュー1</a></li> <li><a href="#2へのリンク">メニュー2</a></li> <li><a href="#3へのリンク">メニュー3</a></li> <li><a href="#4へのリンク">メニュー4</a></li> <li><a href="#5へのリンク">メニュー5</a></li> <li><a href="#6へのリンク">メニュー6</a></li> </ul> </nav> </div> </header> [ script ] $(function(){ $(".menu-toggle").on("click", function() { $(this).next().slideToggle(); }); }); $(window).resize(function(){ var win = $(window).width(); var p = 768; if(win > p){ $("#global-nav").show(); } else { $("#global-nav").hide(); } }); こちらに手をくわえるのでもよいですし、 別のいいやり方があるのであればそちらでも構いません。 ご教示の程、よろしくお願い致します。

  • アコーディオン(jquery)クリック後他閉じたい

    プログラム初心者のものです。 jQueryを利用したアコーディオンメニューを作成したのですが、現在、クリック後開き、他をクリック後もクリック済みの箇所が開いた状態になっています。 <改善> クリックしたメニューのみ表示させたいのですが お手数おかけいたします、ご教示いただけますでしょうか。 下記にソースを掲載してみます。 【javascript】 $(function () { // 親メニュー処理 $('span').click(function() { // メニュー表示/非表示 $(this).next('ul').slideToggle('fast'); }); // 子メニュー処理 $('li').click(function(e) { // メニュー表示/非表示 $(this).children('ul').slideToggle('fast'); e.stopPropagation(); }); }); 【HTML】 <div id="nav"> <span class="btn1"><a href="#">A</a></span> <ul> <li class="t1"><a href="#">A-1</a> <ul> <li class="sub_t1">○○○○</li> <li class="sub_text"><a href="#">あいうえお</a></li> <li class="sub_text"><a href="#">かきくけこ</a></li> <li class="sub_t1">○○○○</li> <li class="sub_text"><a href="#">あいうえお</a></li> <li class="sub_text"><a href="#">かきくけこ</a></li> </ul> </li> <li class="t1"><a href="#">A-2</a> <ul> <li class="sub_t1">○○○○</li> <li class="sub_text"><a href="#">あいうえお</a></li> <li class="sub_text"><a href="#">かきくけこ</a></li> <li class="sub_t1">○○○○</li> <li class="sub_text"><a href="#">あいうえお</a></li> <li class="sub_text"><a href="#">かきくけこ</a></li> </ul> </li> <li class="t1"><a href="#">A-3</a> <ul> <li class="sub_t1">○○○○</li> <li class="sub_text"><a href="#">あいうえお</a></li> <li class="sub_text"><a href="#">かきくけこ</a></li> <li class="sub_t1">○○○○</li> <li class="sub_text"><a href="#">あいうえお</a></li> <li class="sub_text"><a href="#">かきくけこ</a></li> </ul> </li> </ul> </div> ご教授の程よろしくお願い致します。

  • リンクがうまくできません。

    リンクがうまくできません。 ホームページのテンプレートをダウンロードし、メモ帳で編集しているところです。 ダウンロードしたものの中にindex.html(トップページ)とpage1.html(リンク先)が入っています。 トップページにリンクを他にも作りたいので、page2,page3,・・とつくったのですが、 <UL id="menu"> <LI><A href="page1.html">about</A></LI> <LI><A href="page2.html">photo</A></LI> <LI><A href="page3.html">blog</A></LI> <LI><A href="page4.html">link</A></LI> <LI><A href="page5.html">mail</A></LI> </UL> こうした場合に、page1.htmlはちゃんとリンクできるのですが、それ以外のリンクが出来ません。 何か間違えているんでしょうか? それとも、他に何かしなくてはならないことがあるんでしょうか? 初歩的な質問かもしれませんが、よろしくお願いします。

  • FireFoxでリンクをクリックしても飛ばない

    ・Firefoxで表示すると、左上にあるリンクをクリックしてもリンク先に飛びません。 (なぜか他のリンクはきちんと飛ぶ) LunascapeでGekkoエンジンにした時も同じ結果です。 ・IE 8.0/9.0 では、正確にリンク先に飛びます ・何かブラウザによって違う動きをするHTMLを書いてしまったのでしょうか? すみません、教えてください。 ---------- そこのところの記述ですが <p> <a href="http://********************.com/">index.htm</a> | <a href="http://********************.com/about_me.htm">About me</a> </p> FireFoxのみ これでリンク先に飛べません。 http://********************.com/index.htm内で 例えば、 <li><a href="**************.htm"> PCs, **********:ミニタワー</a> </li> と記述したところは、どちらのブラウザでもリンク先に飛べます ヒントや解決方法をいただければ幸いに存じます。

    • ベストアンサー
    • HTML
  • 背景画像へのリンク

    CSSで背景画像をリンクさせているのですが 文字が出てきて困っています。 ソースは以下の通りです。 文字が出ないようにするにはどうしたらいいのでしょうか。 <div id="side"> <div class="menu_content"> <ul class="menu"> <li class="menu_top"><a href="index.html">トップページ</a></li></ul> </div> </div> .menu_content li{display:block; text-indent:-9999px; font-size:0px; width:206px;height:68px; text-indent:-9999px;} li.menu_top a{display:block; width:406px;height:128px; text-indent: -9999px; background:url("css/menu_top.gif") bottom left no-repeat;}

  • リンクページがちゃんと画像表示されない

    PHP5.0、Smartyで開発しています(個人サイト) リンクを押すと、リンクページ(自サイト)は表示されるのですが、 画像などが表示されないことがあります。 .tplファイルなので、↓の同じリンクをいくつものファイルに書きましたが、ふつうにちゃんと表示されるページもあれば、リンクページの画像落ちといったページにもなります。 これはどうしてでしょうか? </div><!--header--> <ul id="menu"> <li><a href="{$info.back_url}">TOP</a></li> <li><a href="{$info.http_url}">記事一覧</a></li> <li><a href="{$info.http_url}/archive">過去ログ</a></li> <li><a href="{$info.http_url}/search">記事検索</a></li> <li><a href="{$info.http_url}/rss">RSS</a></li> <li><a href="{$info.https_url}/admin">管理者用</a></li> </ul> <img src="./image/main_img.jpg" alt="" width="760" height="340" id="main-img" />

    • ベストアンサー
    • PHP
  • <li>で並べたメニューのリンク色指定class

    <li>で並べたメニューのリンク色指定をクラスごとにする方法が分からず困っています。 図のような状態で、MENUは(赤)、TOPは(青)と2種類の色分けをしたメニューバーを作っています。 それぞれ、a:hoverのときに色が薄くなるよう指定したいのですが うまくいきません。 ●現在やっている方法 ・htmlでリストを組み、それぞれリンクタグにクラス指定  MENU(赤) … class="menu"  TOP(青) … class="top" ・cssでclassのリンク色a、a:hoverを指定 【html】 <ul> <li><a href=~ class="menu">MENU</a></li> <li><a href=~ class="menu">MENU</a></li> <li><a href=~ class="menu">MENU</a></li> <li><a href=~ class="top">TOP</a></li> </ul> 【css】 a.menu:link { color: #000000; border-left-width: 5px; border-left-style: solid; border-left-color: #ff0000; padding-left: 5px; font-size: 10px; margin-right: 10px; } a.menu:hover { color: #cccccc; border-left-width: 5px; border-left-style: solid; border-left-color: #ffc5c5; padding-left: 5px; font-size: 10px; margin-right: 10px; } …class="top"(青)も同じ感じ ---------------------------- クラスごとのリンク色指定がうまく認識されていない気がします。 記述が間違っているのでしょうか?それともそもそもこの方法が間違っているのでしょうか? お恥ずかしながらこの場を借りて質問させて頂きました。 色々調べてみたのですが、苦戦しています。お知恵を貸して頂けると助かります。