質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
iframe

HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

805閲覧

javascriptで複数frameあるページの中で1つのリンクをクリックしたい

neji-thon

総合スコア7

iframe

HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/01/01 05:58

編集2021/01/02 04:48

frameが採用されているページにjavascriptでリンクをクリックさせたいです。
うまくいかず、どなたかご教示いただけないでしょうか。

■状況
WinformsにCefSharpを導入し、Chroniumブラウザ内で表示させてるサイト内のリンクをクリックしたいです。
javascriptでそのサイトに自動ログインまではできたのですが、その次のページでさらにクリックしたいのですができずにいます。
ログイン前は1ページですが、ログイン後に5ページほどframeで表示されてるようです。

■クリックしたいリンク(contentsというnameのframe内にこの1行があるようです。)

<a href="#" title="">クリック希望リンク</a>

■Completeが返ってくるので読み込みは完了できてる様子です。

alert(document.readyState)

■以下は5となり、5つのframeの存在は認識してる様子です。

window.length;

■現状確認コード

var

1var num = frame_list.length; 2var i; 3var iframe_window = frame_list[i]; 4 for(i=0;i < num;i++){ 5 var iframe = iframe_window.frameElement; 6 alert(\"id: \" i); 7 alert(iframe_window); 8 alert(iframe);}

上記で、現状確認してみたalertではiは0~4まで回りますが、他は
[object window]
[object HTMLFrameElement]
だけの1行でHTMLのソースらしいものは出てきませんでした。

・a href="#"は同じフレーム内に大量に出てきます。
・idやname,Classはありません。
・aタグに囲まれた"クリック希望リンク"の文字は3回出てきますが1回目のをクリックしたいです。

恐れ入りますが、リンクする方法をご教示いただけないでしょうか。
getElementByIdやquerySelectorあたりを活用すると思いますが、知識が乏しくできておりません。。documentがnullになってしまうようでうまくいかない状態です。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
Frameの名前.document.getElementsByTagName('a')でAタグを集めて
forで回して希望する文字列が見つかったらそれをクリック

C#

1string jsScript = "var href = contents.document.getElementsByTagName('a');" + 2 "for (var i = 0; i < href.length; i++) {" + 3 "if(href[i].textContent == \"クリック希望リンク\") href[i].click();" + 4 "}"; 5HogeBrowser.ExecuteScriptAsync(jsScript);

お騒がせしました。

投稿2021/01/02 04:38

編集2021/02/09 01:47
neji-thon

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問