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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

3回答

9920閲覧

C# ブラウザの自動操作をするには

ElecDove

総合スコア254

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2016/03/28 02:33

お世話になります。

Web自動巡回ツールのようなものをC#(VS2015 Community)で作っているのですが、ブラウザによるページの取得をどうするかで困っています。

現在試しているのは

  1. WebBrowserControlを使った内蔵ブラウザの自作
  2. Webkit.Netを使った内蔵ブラウザの自作
  3. SHDocVw.InternetExplorerを使ったIEの自動操作
  4. Seleniumを使った各ブラウザの自動操作

です。
理由は以下に記述しますが、1と2には限界を感じているので3か4が選択肢になっています。

  1. の問題点は、一部のサイトでフリーズすること。UerAgentの変更(レジストリより)で回避できる場合もあるのですが、すべての環境で同じ値で動くわけでもなく、またサイト毎に値が異なるためその都度値を変更するのは困難
  2. の問題点はDOM操作がうまくできないこと・・・自分がヘタなだけなのかもしれないのですが、調べた情報ではまだあまり対応しきれていないような・・・それと情報が1と比べて少ないです・・・(英語ばかりなのかな?)
  3. の問題点はまだ良くわかっていないです
  4. の問題点もまだ良くわかっていないですがフレームやポップアップには対応していないとの情報を見かけました。フレームやポップアップのサイトもかなりあるのでこれが使えないのは致命的・・・。

自分で使用する、というよりも複数の人が使うツールなので、環境依存度が高すぎるのも困ります。せいぜいインストーラーで対応+ちょっとした設定変更くらいで使えるようにしたいと思っています。
また、ブラウザに拘りは特に設けず、この目的が達成できるのであれば、主要ブラウザ(IE、Chrome、Firefox)であればどれでもいいかなと思っています。(複数のブラウザに対応できるのならなおよいのですが、できたらいいなぁ~程度です)

DOM操作はかなりやります。主にいろいろな値の取得とformへの記入、送信ですが・・・。
JavaScriptに関しては直接関数を叩く、ということはなく、あくまでUIで実装されているもの(submitボタンに関連付けられている関数)を想定された手段で(submitボタンを押すことで)実行する程度です。
直接この関数を実行できればいいなぁなんて思ったりしますが、どうしてもやりたければ要素追加しちゃいます。。。。

選択肢3の SHDocVw.InternetExplorerを使ったIEの自動操作がよさそうですが、「これはできないよ」とか難しいんじゃないかな?というアドバイスありましたら教えていただけますと幸いです。

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

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

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

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

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

guest

回答3

0

自己解決

私が求めているような回答がつかないので一旦締めさせていただきます。

投稿2016/04/18 06:42

ElecDove

総合スコア254

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

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

0

formへの記入、送信ですが・・・。

これも結局、HTTPプロトコルでpostしているだけです。
検索したら
http://www.yoheim.net/blog.php?q=20120611
このサイトがわかりやすいかな

投稿2016/03/28 04:21

TomoakiKurata

総合スコア46

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

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

ElecDove

2016/03/28 11:30

回答ありがとうございます httpやhtmlはCSを学ぶより随分前からやってたので(CGIも作ったりしてます)通信はできますが、htmlの解釈やJSの実行がハードルになっています…。 またログインサイトが大半なのでSessionID等も考えなければいけません…。
guest

0

HTMLプロトコルを勉強して、socketかなんかで直接、情報を受信、送信できるようになるのが一番の近道かな。
具体的に、何を送れば何が送られてくるか、がわかれば大抵のことはできます。
ブラウザーコントロールですとブラウザー依存になり、かえってややこしいんですよ。
C#ならWebRequest/WebResponseあたりかな。
遠回りに見えますが、巡回ツールなら一番近道だと思います。

投稿2016/03/28 04:19

TomoakiKurata

総合スコア46

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

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

ElecDove

2016/03/28 11:25

回答ありがとうございます httpのプロトコルはある程度知ってるので通信できなくもないのですが、JSでフォームの内容を作ったり、Ajaxをフル活用したページが多く、JSに依存したページばかり、というのが課題です JSのエンジンは流石に作れないので、htmlの解釈はすべて外部ブラウザに丸投げせざるを得ない状況です…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問