Watir

RubyでWebブラウザを操作するツール(知識更新のため

はじめに 過去の人 @riocampos ですw Ruby で動的なサイトの Web スクレイピングをするときに、Selenuim をラップした Watir を使って動的なHTMLを取得していました。Selenium だと低水準なところに気を遣わないといけないのですが、Watir はうまく Rubyish …

Watirを使う際にChromeDriverを自動的にインストールさせるrubygem webdrivers

自動化したいよね ChromeDriver は Chrome のバージョンと合わせておく必要があり、合わないとエラーが出ます。しかし Chrome はしょっちゅう更新されていきますし、しかもタイミングによっては(なぜか)ChromeDriver のほうが先に更新されてしまって結果と…

WatirでHeadless Chromeを使うまでのメモ

サーバ的環境から JavaScript が必要なブラウザアクセスする場合はいままでずっと PhantomJS を使ってきたわけですが、残念ながら PhantomJS は2017年6月ごろで開発を終了したそうです*1。 ということで遅まきながら Headless Chrome を使ってみることにしま…

PhantomJSとSelenium/Watirを使っているherokuでgit push heroku masterするとConnection refusedエラーが出てウザイ

こんな感じのエラーが出てログを圧迫する Cycling のときや push のときに Connection refused - connect(2) for "127.0.0.1" port 8910 (Errno::ECONNREFUSED) というエラーが出ます(なおポート番号は違う場合もあります)。 Nov 29 22:29:40 app-test her…

Watirでクリック後の更新を待つ

Watir-Webdriverでリンクなどをクリックした後に、更新されるのを sleep して待っていたのですが、ちゃんと更新を確認出来るメソッドがありました(当然ですよね ブロック内が真/偽になるまで待機する、というメソッドです。 (なお PhantomJS で ReactJS の…

SafariDriverの作り方

この記事は古くなりました。 Apple Safari: safaridriver (no download needed, it’s pre-installed if you have Safari 10) Drivers – Watir Project safaridriver requires using Safari 10 on either El Capitan or Sierra. Safari – Watir Project だそ…

Watir Webdriverの使い方の例: StackOverflow 日本版へログインする

JavaScript が使われているサイトのスクレイピングなどに役立つ Watir Webdriver 。しょっちゅう使っているのでこれに関する記事を書きたいと思いつつ書いてなかったのですが、今回 ruby - JavaScript が実行された後の HTML を取得したい - スタック・オー…

WatirでPhantomJSを使うときに出るエラー

PhantomJSでWatir(正確にはWatir WebDriver*1およびその中で働いているSelenium WebDriver)を使ってWebアクセスするとき、1回だけならばエラーが出ないのだけど、ループ処理など繰り返しPhantomJSとWatirを使うと時々PhantomJSが動かなくなるときがある。…

PhantomJSを使ったWatirでUser-Agentを変更する

残念ながら引用だけなんですけどね。 オリジナル require 'watir-webdriver' capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.userAgent" => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like…

twitter OAuthのアクセストークンをブラウザなしで取得

以前にブラウザを使った方法を引用したことがあります。 twitter OAuthのアクセストークンを取得 - 別館 子子子子子子(ねこのここねこ) ただし、この方法だと、目的のアカウントにログインしているWebブラウザを用意しておく必要があります。 面倒でした。…