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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

JavaScript

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

Q&A

0回答

2030閲覧

Puppeteerの自動操作でログインボタン押下後のページ遷移後のURLを取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

JavaScript

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

0グッド

0クリップ

投稿2020/02/25 06:54

やりたいこと

Puppeteerでの自動操作でログイン後のURLを取得したい

今出来ていること

PuppeteerでログインフォームにIDとPWを入力してログインボタンを押すまで。

躓いているところ

ログイン後に表示されるURLが表示されるまでの待機は可能だが、その際にURLの取得が出来ない。

環境

Windows10
node v12.16.0
Git v2.25.0
Nodist v0.9.1
puppeteer v2.1.1

コード

const puppeteer = require('puppeteer'); //URLハンドリング var http = require('http'); var fs = require("fs"); //urlオブジェクトを使えるようにする。 var url = require("url"); //初期設定 var url_loginpat = "url_login"; var url_acceptpat = "url_accept"; var url_codepat = "code="; var redirecturl = "" const loginID = "loginID" const Passwd = "PW" process.on('unhandledRejection', console.dir); ( async() => { // ブラウザ起動と設定 const browser = await puppeteer.launch({ // モード選択 / デフォルトtrue headless: false, // SSL証明書エラー無視する場合(オレオレ証明書など) "ignoreHTTPSErrors" : true, // 目視確認用に操作遅延(ms) "slowMo" : 200, // 他設定 args: [ // プロキシ使う場合はここ //'--proxy-server=192.168.100.252:8080', // Chromeウィンドウのサイズ '--window-size=800,650', // Chromeウィンドウのポジション '--window-position=100,50', '--no-sandbox' ] }); const page = await browser.newPage(); // 画面の大きさ設定 // Chromeのウィンドウ自体の大きさの調整ではないです //await page.setViewport({width: 1600, height: 950}); try { // 対象URLを開く タイムアウト 10000ms //await page.goto(process.argv[2], {waitUntil: 'networkidle2', timeout: 10000}); const response = await page.goto(process.argv[2], {waitUntil: 'networkidle2'}); for(const req of response.request().redirectChain()) { //console.log(`${req.url()} => ${req.response().headers().location}`); //console.log("リクエストURL"); //console.log(`${req.url()}`); //console.log("リダイレクトURL"); //console.log(`${req.response().headers().location}`); redirecturl = `${req.response().headers().location}`; } //①ログインページの場合 if(redirecturl.indexOf(url_loginpat) > -1){ //テスト確認用 // OSがWindowsなら"USERPROFILE", Mac, Linuxは"HOME"を参照 //var dir_home = process.env[process.platform == "win32" ? "USERPROFILE" : "USERPROFILE"]; //var dir_desktop = require("path").join(dir_home, "Desktop"); //var file_fullpath = dir_desktop + "/out.txt"; //var text = "ログインページです"; //fs.writeFileSync(file_fullpath, text); console.log('ログインページ'); //メールアドレスの入力 await page.type('input[name="LOGIN_ID"]', loginID,0); //次へボタン await page.click('button#nextbtn') //パスワードの入力 await page.type('input[name="PASSWORD"]', Passwd,0); //サインインボタン await page.click('button#nextbtn'); //コード発行待ち(ページ遷移待ち) await page.waitForNavigation(1500); } //②ログインはパスされ、OAuth認証許可の場合 if(redirecturl.indexOf(url_acceptpat) > -1) { } //③①②のページに行かず、APIコードの場合 ////→理想は③で常に動くなるようになる //console.log(page.title); } catch (e) { // エラー出力 console.log("キャッチのエラーです"); console.log(e); // ブラウザを閉じて終了 await browser.close(); process.exit(200); } // ブラウザを閉じて終了 await browser.close(); })();

知見をお持ちの方がおりましたら、
ぜひお力を貸していただけますでしょうか?

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問