読者です 読者をやめる 読者になる 読者になる

ますたろー日記

大阪から上京して7年。渋谷界隈で頑張ってます。

Selenium2をいじってみた:vol3

Selenium2に関するエントリを2つ書いてみたけど、せっかくなので「Selenium2.x で Ajax なWebアプリケーションをテストしよう ~ Facebook の自動あいさつ返答機能を実装 ~」で紹介されている機能のPerl実装を書いてみた。

指定されたフレンドにPokeする処理のPerl実装

#!/opt/local/bin/perl                                                                                                                                       

use strict;
use warnings;
use Selenium::Remote::Driver;
use Getopt::Long;

my $user     = undef;
my $password = undef;
my $friend   = undef;
my $option   = GetOptions(
    "user=s"     => \$user,
    "password=s" => \$password,
    "friend=s"   => \$friend,
);

if (!$user || !$password || !$friend) {
    die 'You must specify -user, -password and -friend.';
}
my $driver = Selenium::Remote::Driver->new(
    browser_name => 'firefox',
);
my $elem = undef;

# Facebook ログイン画面表示                                                                                                                                 
$driver->get('https://www.facebook.com/');
$elem = $driver->find_element('email', 'id');
$elem->send_keys($user);

# ID/Password入力                                                                                                                                           
$elem = $driver->find_element('pass', 'id');
$elem->send_keys($password);

$elem = $driver->find_element('login_form', 'id');
$elem->submit;

# Friendのページを表示                                                                                                                                      
$driver->get("https://www.facebook.com/$friend");

# poke実行                                                                                                                                                  
$elem = $driver->find_element('/html/body/div[3]/div/div/div[2]/div/div/div[2]/div/div/div[3]/div/a', 'xpath');
$elem->click;

$elem = $driver->find_element('/html/body/div[3]/div/div/div[2]/div/div/div[2]/div/div/div[3]/div/div/div/ul/li[2]/a', 'xpath');
$elem->click;

$driver->set_implicit_wait_timeout(5000);
$elem = $driver->find_element('pk01', 'name');
$elem->click;
$driver->set_implicit_wait_timeout(5000);

以上です。