ラベル Windows の投稿を表示しています。 すべての投稿を表示
ラベル Windows の投稿を表示しています。 すべての投稿を表示

2018年3月18日日曜日

Selenium + Chrome の環境が一瞬で構築できたというアレ。

前提

さて Selenium を試してみようか!
と思った時点で、こんな環境でした。
  • Windows10 64bit
  • Chrome はもちろんインストール済
  • php もインストール済
    • そしてパスが通っている
  • composer もインストール済
    • そしてパスが通っている

ブラウザのオートメーションと言えば昔は…

余談ですが、昔やったときは VB かなんかで IE を CreateObject して、なんか色々頑張ってやる感じで、まぁブラウザの操作自動化しても良いけどクソ面倒くさいよ。むしろ AutoHotKey とかでキー操作を自動化したほうが早いわ。ぐらいに思っていましたが…、時代は大分前進していたようで。

Selenium で Chrome を自在に動かす。しかも一瞬で。

さて、早速準備ですがやることはこれだけです。
  1. PHP 用ドライバを DL
  2. Windows 用 Chrome ドライバを DL

PHP 用ドライバを DL

composer.json にこう書いてインストールするだけです。
{
    "require": {
        "facebook/webdriver": "1.5.*"

    }
}
※最新版の Version は GitHub で確認してください

インストール。どん。
composer install
以上。

Windows 用 Chrome ドライバを DL

ここから「chromedriver_win32.zip」をダウンロードして解凍するだけです。
64bit 専用はないので、64bit でも 32bit 版で動かします。
linux と mac 版も置いてありありますね。
※最新版の Version はこちらで確認してください

Selenium の Hello world

ここまでできたら、あとはソースがあれば動きます。
試しに Google で Hello world を検索して見ます。

ソースはこんな感じ。

hello_world.php
<?php
require_once './vendor/autoload.php';

use Facebook\WebDriver\Chrome\ChromeDriver;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;

function hello_world()
{
    // 環境変数にドライバパスを設定
    putenv('webdriver.chrome.driver=' . __DIR__ . '\chromedriver.exe');
    
    // Chrome を起動してページ遷移する
    $driver = ChromeDriver::start();
    $driver->get("https://www.google.co.jp/?q=helloworld");
    // 【検索】ボタンを押下
    $elem = $driver->findElement(WebDriverBy::name('btnK'));
    $elem->click();

    sleep(3);
    $driver->close();
}

hello_world();

※ facebook webdriver の API 一覧はこちら

最終的なフォルダ構成は、こうなっています。

あとはコレを実行すると、、
php hello_world.php

ブラウザが立ち上がり…

https://www.google.co.jp/?q=helloworld に遷移して【Google 検索】をクリックし…

検索結果のページが表示され…

3秒待機したら終了します。

はい、ここまで一瞬ですね。素晴らしい。
正直、こんなに簡単だとは思っていませんでした。

これで、ローカルでの自動化環境は整いました。
あとは API などを見ながら味付けしていく感じかと思います。
今回は、目的がローカル環境で達成できたので、 Selenium Server を使用していません。

次は、Selenium Server と組み合わせてみたいと思います。

以上。

補足

今回は facebook 製のを使いましたが、PHP の Web driver は公式では 3つ紹介されています。

参考

2018年2月24日土曜日

Windows で高速に Git clone する方法

Windows 環境で開発しているとき、 どうやって Git clone していますか。

実はコマンドは、エクスプローラーのアドレスバーに直接打ち込めます。








Powershell を開くときなども、ここに "powershell" と打ち込むとディレクトリを移動しなくて良いので楽です。

2010年8月31日火曜日

Windows Vista のスタートメニューにマイビデオを追加する方法

最近、何かと PC で画像を管理する機会が多くなった。
ケータイもスマートフォンも高機能なカメラを積んでいるので、つい色々と撮ってしまう・・・

そうしているうちに不便に感じたのが、スタートメニューに「ピクチャ」、「ミュージック」はあるのに、「ビデオ」がないということ。「ビデオ」がないせいで、マイビデオ自体が存在しないのかと思っていたぐらいだ・・・。

そこで調べたのだが、どうやら今のところ Windows 上でスタートメニューの右側をいじれる設定はなかった(左側なら簡単にいじれる)。
だが、レジストリをいじって「ゲーム」の代わりに「ビデオ」を表示させることは可能だ。
日本語の情報が少なかったので、紹介しておこう。

------------------

ちなみにまず、結果はこうなる。
  image

------------------

それでは手順。

  1. 準備
  2. 実行
    • videos_sm_JP.reg を実行する ( videos_sm.reg は英語版 )
      image 
      確認メッセージがでるので「はい」で進む。
      image
      完了メッセージがでたらOK。
       image
    • ログオフする
      一旦ログオフし、再びログオンするとゲームがビデオに!
      image

      これで完了。以降ビデオからマイビデオにアクセスできるようになる。便利!!
      ただし、マウスを重ねたときに出てくる説明がゲームの内容になっているが・・・細かいことは気にしない。
  3. 巻き戻し方法
    ビデオをゲームに戻すときは、Undo_videos_sm.reg を実行し、ログオフする。

以上。

2009年11月7日土曜日

Windows XP で、リモートデスクトップ接続を複数ユーザで同時に行う方法(マルチセッション)

PCで作業をしていると、リモートデスクトップを使う機会がよくある。
かなり便利な機能なので、使う人はたくさんいるものだ。

そこで問題になるのが、「複数ユーザの同時ログオン」。
Windows XP では1人のユーザしかログオンすることはできないし、誰かがログオン中に無理やりログオンすると、既にログオン中のユーザが強制ログオフされてしまう。。

という問題はすっかり「仕方のないもの」だと思っていたのだけれど、今日調べたらそれが解決できる、つまり「複数ユーザが同時ログオンできる」方法を見つけたので共有しておく。

------------------------------------------------------------------------------

複数ユーザの同時ログオン方法(マルチセッション)

Ⅰ.設定手順

  1. Terminal Server Patch をインストール
    • http://www.kood.org/terminal-server-patch/ から、「Terminal Server Patch」をダウンロードする
      →「Download Latest 2.1 Binary」をクリック(2009/11/06 現在)
    • ダウンロードしたファイルを実行してインストールする
      →ファイル名は「Termiserv_XPSP2-SP3_i386_2.1.exe」(2009/11/06 現在)
      →実行中に「動作の保障がなんちゃら・・・」「CDを入れてください」などメッセージが出るが、気にせずOKで進む
    • PCを再起動する
      →最後に再起動を求められるので、再起動する
  2. グループポリシーで、接続数を設定する
    • グループポリシーエディタを起動する
      →ファイル名を指定して実行「gpedit.msc」
    • 「コンピュータの構成」→「管理用テンプレート」→「Windows コンポーネント」→「ターミナル サービス」を選択
    • 同「ターミナルサービス」内の「ターミナル サービス ユーザに対してリモート セッションを 1 つに制限する」を有効にする
    • 同「ターミナルサービス」内の「接続数を制限する」を有効にし、「最大接続数」を 999999 にする
      →「最大接続数」は任意の値でOK
  3. レジストリエディタで、マルチセッションを有効にする
    • レジストリエディタを起動
    • HKEY_LOCAL_MACHINE
      └SOFTWARE
         └Microsoft
           └Windows NT
              └CurrentVersion
                └Winlogon
      の「AllowMultipleTSSessions」の値を 1 にする

以上、簡単 3 ステップ!
あとは、実際にリモート接続するだけ。

Ⅱ.注意点

  1. ユーザについて
    • ドメインユーザには対応していない(と謳っている)
    • 同一ユーザでの同時ログオンは対応していない(ユーザアカウントを複数作成すること)
  2. OS のバージョンについて
    • この記事は、サーバ側(接続される側)に Windows XP SP3 を使用したときのものである
    • 接続する側も Windows XP SP3 だったが、接続する側は割と何でもいけるらしい
  3. 責任について
    • もちろん自己責任でやること
    • ライセンス云々の問題は不明

Ⅲ.補足

そもそもなぜこんなことが可能かというと、Windows XP SP2 の Beta版でマルチセッション機能の開発をしたが、セキュリティ上の問題(ライセンスの問題も?)等が解消されなかったので、機能を無効にしている、ということらしい。

Ⅳ.参考

<ポジティブ回路>http://blog.goo.ne.jp/sito1980/e/5204ff550ed8ad14bcb453921802b72d
<きたへいの悠々自適>http://kitahei.cocolog-nifty.com/youyou/2007/07/windows_xp_ece3.html
<IT pro>http://itpro.nikkeibp.co.jp/free/NT/NEWS/20040113/1/

 

以上。