Chromium ブラウザにおいて、<Button class="submit" >送信</Button> といった
idやnameのないclassをクリックする事は可能でしょうか?
海外サイト等も探し回ったのですが、情報を見つける事が出来ておりません。
ご存知の方おられましたら、サイトページでも構いませんのでよろしくお願い致します。
「Chromiumブラウザ」とは具体的に何を指しているのですか?
完全な製品であるFirefoxやChromeとは違うので、Chromiumだけではあいまいに思えます。
また、逆に教えていただきたいのですが、
>idやnameのないclassをクリックする事は可能でしょうか?
これはidやnameのあるボタンならクリックできているということでしょうか。
もしそうなら、どのようにしてDelphiからコントロールしているのですか?
> 「Chromiumブラウザ」とは具体的に何を指しているのですか?
> 完全な製品であるFirefoxやChromeとは違うので、Chromiumだけではあいまいに思えます。
ブラウザという言葉が混乱の元ですね。
正式名称にはっきり自信はないですがDelphiで使うChromimuコンポーネント
Chromium Embedded Framework (CEF)が正式なのでしょうか。
> また、逆に教えていただきたいのですが、
> >idやnameのないclassをクリックする事は可能でしょうか?>
> これはidやnameのあるボタンならクリックできているということでしょうか。
こちらは今のところ必要ないので実装しておりません。
必要があれば実装するかもしれませんが。
以上、よろしくお願い致します。
TWebBrowserのようなコンポーネントを使って
他社のサイトにアクセスして、name や IDの無いボタンを
クリックしたときのイベントを受け取りたいけど出来ません
なのでしょうか?
「idやnameのないclassをクリックする事は可能でしょうか?」
クリックするのは可能なんじゃないでしょうか?
HTMLのform のsubmitやActionが設定されていなければボタンを押せるだけだと思いますが
>海外サイト等も探し回ったのですが、情報を見つける事が出来ておりません。
Mr.XRAYさんのページとかすぐヒットしましたけど
参考にはなりませんか?
http://mrxray.on.coocan.jp/Delphi/plSamples/932_GoogleChromeControl.htm
ブラウザとコンポーネントでは大違いです。情報はきちんと伝えていただかないと困ります。
>こちらは今のところ必要ないので実装しておりません。
実装していない=試していない と理解しました。
必要ある/ない に関わらず、難しいことの前に「idやnameのある普通のボタンをクリック」
という基本的なことを試してみるのが良いと思うのですが。
いま現在、出来ていることは何ですか?
そもそも、Chromiumコンポーネントはきちんとインストールできているのですか。
(何を参考に、どこから?)
take様
ありがとうございます。
>Mr.XRAYさんのページとかすぐヒットしましたけど
>参考にはなりませんか?
>http://mrxray.on.coocan.jp/Delphi/plSamples/932_GoogleChromeControl.htm
こちらのページについては、もちろん拝見済みでした。
再度、見たところ少し増えてる?気のせいかもしれませんが、[登録]ボタンというところで
試していなかった部分もありましたのでIDのあるサイトで、変えてテストしてみましたが動作しませんでした。
上記のページとの違いは、ボタン部分がinputかbuttonの違いになるかとは思うのですが。
classでクリックする情報は載ってないですしね。
なぜか、ボタンでクリックする部分がいろんなサイトのサンプルを試したのですが
どれもうまくいきませんでした。
上記サイトの入力部分に関しては問題なく動作しています。
Googleサイトでは問題ないという事は、サイトによっては使えないようになってたりする可能性があるという事ですかね。
ベテランのみなさんはご自分でこのような事例に対応される場合、コンポーネントの
ソースまで見たりされたりして解決されておられるのでしょうか?
浅はかな知識で申し訳ないですが、コンポーネントのソースとWindows等の
APIを調べれば分かると考えて良いのでしょうか。
ほかの人からも指摘があると思いますが
「動作しませんでした」
だと何が動作しないのかわかりません
必要最小限のソースとHTMLとあと
「クリックすることは可能ですか?」
の意味も不明です。
ボタンが表示されてさえいれば
クリックする事は可能です。
既に複数の方からの指摘がありますが,
それに対しては何にも反応せず,うまくいかないを繰り返しているだけでは解決できないです.
具体的な解決策が必要であれば,具体的な内容を提示することが必要です.
私の記憶では,この掲示板は「愚痴」をこぼす場所ではなかったと思います.
以下を試してダメだったら,諦めるか,ご自分で.
var
LJsText : String;
LJsText := 'document.getElementsByClassName("submit")[0].click();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(LJsText, 'about:blank', 0);
>ブラウザという言葉が混乱の元ですね。
そういう問題ではないと思いますよ.
Delphi を使っている方の全てが,貴方のように Delphi のことを全て知っているわけではありません.
私なんか,標準の VCL, コンポーネントだって全ては把握していません.
参考記事
http://www.w3schools.com/jsref/met_document_getelementsbyclassname.asp
http://alphasis.info/2013/07/javascript-dom-documentobject-getelementsbyclassname/
take様
>必要最小限のソースとHTMLとあと
>「クリックすることは可能ですか?」
>の意味も不明です。
そうですね。よくよく考えれば、クリック可能と言われますね。
>ボタンが表示されてさえいれば
>クリックする事は可能です。
言葉足らずでしたが、プログラム上から実際にクリック可能なのかと
思いましたので。
Chromiumに関しては、クリックコマンドっぽいものがどれか個人的にわからなかったので
Googleがそうさせないようにセキュリティ上げているのかも?とかも思いましたので。
そういう事も記載すれば良かったかもしれないですね。
Mr.XRAY様
誠にありがとうございます。
無事にクリック出来ました。
参考サイトもありがとうございます。
同じサイトを見ていたのですが、当然スキルは足りないので経験不足だと痛感させられます。
ご提案等いただきました皆様にも感謝致します。
> それに対しては何にも反応せず,うまくいかないを繰り返しているだけでは解決できないです.
そうですね。きちんと反応すべきところを反応しておりませんでした。
ただ、ご相談させていただいている質問で敢えて除外している内容や直接関係ないところ等を
触れている部分に関しては、逆に何が目的で、力量を試すためなのか、コメントしてくださった方が
知りたいのか、ただ揚げ足を取りたいのか。そういうところは一度は回答させていただいたのですが
続くようだったので関係ない部分は省かせていただきました。
> 具体的な解決策が必要であれば,具体的な内容を提示することが必要です.
そうですね。テストコード等記載する必要があったかもしれないのですが
10以上試しているのでそれら全てを掲載する事は適切ではないと思いました。
一つか二つくらいは挙げた方がよろしかったでしょうか。
今回、私は下記を中心に調べておりました。
どれがクリックするためのものかもわかっておりませんでした。
ExecuteJavaScript、VisitDomProc、AddEventListenerProc
上記のキーワードもそうですが、関係のないキーワードでここに飛んでこられた方に
目的の回答ではなかったという事があまりないようにしたいと思っております。
テストコードを並べ過ぎて、それを参考にまた違う方向へ行く事も避けたいと思っておりました。
サイトに関しても公開出来ないサイト等もありますので、ほぼ似たコードの
サンプルを出す事でわかっていただこうと思いました。
経験がそこまであるわけではないですが、下記のキーワードでわかる人には
分かる内容になっていると思っておりました。
"Chromium"、"<Button class="submit" >送信</Button>"、"class"
楽をして記載したわけではなく、精通している方であれば必要な情報は揃っていると思いました。
ただ、やはり少し情報が少なかったかもしれません。
今回、Mr.XRAY様から解決に至る回答をいただけたのですが、他に何が必要だったでしょうか。
具体的な内容は、上記のコードと思っておりましたがformから含めた方が良かったのでしょうか。
そうすれば、form情報にて送信する方法が出たかもしれないのですがそれは求める回答では
ありませんでした。
実際、海外サイトにはフォーム内容(input)をDelphiの中でタグごとaction先に
送信する例がありました。
しかし、これは私自身が望む物ではありませんでした。
こういった余計な情報を入れた質問による皆さんへの負担は避けたかったのです。
ご提案いただけても、そういう事ではなく…といいづらいので。
> 私の記憶では,この掲示板は「愚痴」をこぼす場所ではなかったと思います.
愚痴に見えたのであればすいません。
サイトの文句を言ったのでもなく、ご提案していただいた方に事実を伝えたかっただけでした。
私個人もここのサイトでプログラミング情報以外の無駄な情報は避けたいと
思っていますので、今後愚痴のようにならないよう気を付けたいと思います。
> 私なんか,標準の VCL, コンポーネントだって全ては把握していません.
多くのページがある参考サイトを作っておられるのにそうなのですね。
サイトを作られ、ここでも他の方へのアドバイスをされ、頭が上がりません。
あまりお世話にならないように個人的に調べ尽くしてわからない場合は
質問させていただいています。
今回も2週間毎日12時間以上調べると共にテストしても得られたかった答え、というより
参考サイトがあっても、私に理解する経験が足りなかっただけだと思います。
ここでこういう事をいろいろ記載するのは、プログラミング以外の情報で
あまり載せたくないものですが、私のように情報が少なかったりで分かってないと
仕方ない事なのかもですね。
私自身は、、楽でも適当でもなく考えた上で投稿した事をご理解いただく
説明させていただきました。
至らない点は当然あったと思っております。
今後、質問させていただく場合は他の方のを参考に迷惑が掛からないよう
質問させていただこうと思います。
ちなみにMr.XRAYさんのコードから以下のキーワードでGoogle検索しても
3件しかヒットせず、そのうちidを使用しないものでは、javascriptで参考になる部分は
ありますがjavascriptをどう実行するのか等も、ご提案いただく前は不明で自分のスキルでは
参考に出来なかったと思われます。
"document.getElementsByClassName" "click()" "Browser.MainFrame.ExecuteJavaScript" "about:blank"
今回、Chromiumは初の取り組みでしたのでご提案いただいたコードで、ExecuteJavaScriptの意味も
わかりましたので感謝致します。
以後、気を付けてまいりたいと思います。
ありがとうございました。
ツイート | ![]() |