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

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

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

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

JavaScript

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

selenium

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

Q&A

解決済

2回答

1114閲覧

Golangのagoutiを扱ったのですが、少しトラブルが起きました

退会済みユーザー

退会済みユーザー

総合スコア0

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

JavaScript

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

selenium

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

0グッド

0クリップ

投稿2017/10/16 07:52

編集2017/10/16 13:54

初めまして。TERATAILを利用するのは初めてです。

教えていただきたいこと

(Seleniumを使えばいいと言う意見をいただきました。そのおかげで進展があったため、質問内容を大幅に変更させていただきます!)

agoutiというライブラリを使って、ウェブの自動化を図りました。
https://admin-official.line.me/
このサイトに自動でログインするものです。
以下のコードで、ログインの一歩手前まではできました。

go

1package main 2 3import ( 4 "github.com/sclevine/agouti" 5 "log" 6 "time" 7) 8 9func main() { 10 // ブラウザはChromeを指定して起動 11 driver := agouti.ChromeDriver(agouti.Browser("chrome")) 12 if err := driver.Start(); err != nil { 13 log.Fatalf("Failed to start driver:%v", err) 14 } 15 defer driver.Stop() 16 17 page, err := driver.NewPage() 18 if err != nil { 19 log.Fatalf("Failed to open page:%v", err) 20 } 21 // ログインページに遷移 22 if err := page.Navigate("https://admin-official.line.me/"); err != nil { //ログイン画面を開く 23 log.Fatalf("Failed to navigate:%v", err) 24 } 25 26 id := page.FindByID("id") //メアドボックス 27 password := page.FindByID("passwd") //パスワードボックス 28 id.Fill("ログインするときのメールアドレス") //メアドボックスにメアドを入力 29 password.Fill("ログインするときのパスワード") //パスワードボックスにメアドを入力 30 if err := page.FindByClass("MdBtn03Login").Submit(); err != nil { //ログインサブミットのボタン 31 log.Fatalf("Failed to login:%v", err) 32 } 33 time.Sleep(3 * time.Second) //ウィンドウを3秒保持 34} 35

サブミットをすると、このようにPINコードを打つ画面が出てきます。これをコンソールに出力したいのですが、

go

1page.FindByClass("mdLYR04PINCode").Text() //mdLYR04PINCodeはこの8484というPINコードのクラスです

このコードを実行しても、 CSS: class not foundと言われてしまいます

これはおそらくHTMLが更新されたからでしょう。

しかし、seleniumは見た感じHTMLが更新されても同時にpageも更新されますよね?
なのに、試しにスクリーンショットを取ってもこのポップアップは表示されません。
なぜこの本人確認POP UPは幽霊のように実体がないのでしょうか。

PIN

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

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

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

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

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

guest

回答2

0

MitmProxyを使えるのであればSeleniumを調べてみると良いと思います。

投稿2017/10/16 09:15

YouheiSakurai

総合スコア6142

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

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

YouheiSakurai

2017/10/16 09:18

Seleniumでやりたいことを実現できる様になったら次はPhantomJSです。
退会済みユーザー

退会済みユーザー

2017/10/16 09:40

ありがとうございます seleniumについて調べたのですが、ブラウザの自動運転ツールということで 必ずしもPhantomJSというわけではなく、golangやpythonでもselemiumを扱うことはできますよね?
YouheiSakurai

2017/10/16 09:46

golangはわかりませんがpythonならselemiumでブラウザの自動運転ができます。そしてselemiumで自動運転ができるようになると、次はブラウザをヘッドレス化したいと思うだろうなと思って(先を見越して)PhantomJSを勧めました。
guest

0

ベストアンサー

page.Session().Refresh()を挟むことでうまくリロードできました。
なぜかはわかりません。issueでrefreshと検索してそれっぽいのを使って見たところうまくいったと言う感じです。

page.Refresh()とすると、ページの元URLをリロードしてしまい今までの処理が水の泡になりますw

投稿2017/10/16 14:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問