[PHP] 13 ブラウザ起動と同時にDeveloper Toolsを開く Chrome, Firefox

[M1 Mac, Big Sur 11.7.2, PHP 8.2.1, MySQL 8.0.31, noFramework]

ブラウザ起動と同時にDeveloper Toolsを開くようにしました。

Firefoxは下側に開きます。後から右側に変えられるものの私には非常に使いにくいのでChromeに戻ってきました。

<?php
require_once ('../../composer/vendor/autoload.php');
use Facebook\WebDriver\Chrome\ChromeDriver;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\Remote\DesiredCapabilities;

# MySQLサーバ起動判定
exec('mysqladmin ping', $out, $ret);
$out_str = $out[0];
$out_str2 = sprintf("out_str: %s", $out_str);
echo $out_str2;

if(strpos($out[0],'alive') === false){
    exec('mysql.server start');
}else{
    print 'MySQLは起動しています';
    echo "\n";
}

# Webサーバ起動
exec('php -S localhost:8890 -t "/code/PHP/projects/02_mysql_searcher39" > /dev/null &');

# chromedriverのパス設定
$driverPath = realpath("/opt/homebrew/Caskroom/chromedriver/109.0.5414.74/chromedriver");
putenv("webdriver.chrome.driver=" . $driverPath);

# オプション指定
$options = new ChromeOptions();
$options->addArguments(['--width=400','--height=400','--auto-open-devtools-for-tabs']);

$caps = DesiredCapabilities::chrome();
$caps->setCapability(ChromeOptions::CAPABILITY, $options);

# Chromeを起動しphpスクリプトを実行
$driver = ChromeDriver::start($caps);
$driver->get('http://localhost:8890/input.php');

<以下略>
<?php
require_once ('../../composer/vendor/autoload.php');
use Facebook\WebDriver\Firefox\FirefoxDriver;
use Facebook\WebDriver\Firefox\FirefoxOptions;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\Remote\DesiredCapabilities;

# MySQLサーバ起動判定
exec('mysqladmin ping', $out, $ret);
$out_str = $out[0];
$out_str2 = sprintf("out_str: %s", $out_str);
echo $out_str2;

if(strpos($out[0],'alive') === false){
    exec('mysql.server start');
}else{
    print 'MySQLは起動しています';
    echo "\n";
}

# Webサーバ起動
exec('php -S localhost:8890 -t "/code/PHP/projects/02_mysql_searcher38" > /dev/null &');

# geckodriverのパス設定
putenv('webdriver.gecko.driver=/usr/local/bin/geckodriver');

# オプション設定
$desiredCapabilities = DesiredCapabilities::firefox();
$firefoxOptions = new FirefoxOptions();
$firefoxOptions->addArguments([ '--width=600','--height=400','-devtools']);
$desiredCapabilities->setCapability(FirefoxOptions::CAPABILITY, $firefoxOptions);

# Firefoxを起動しphpスクリプトを実行
$driver = FirefoxDriver::start($desiredCapabilities);
$driver->get('http://localhost:8890/input.php');

<以下略>

[PHP] 12 Firefoxで自動操作

[M1 Mac, Big Sur 11.7.2, PHP 8.2.1, MySQL 8.0.31, noFW]

Webアプリ自動操作のブラウザをFirefoxに変えてみました。

Developer Toolsは最初から日本語対応です。警告の内容が細かく、Chromeに比較して開発者にやさしい仕様に見えました。

しばらくFirefoxを試してみます。

<?php
require_once ('../../composer/vendor/autoload.php');
use Facebook\WebDriver\Firefox\FirefoxDriver;
use Facebook\WebDriver\Firefox\FirefoxDriverService;
use Facebook\WebDriver\Firefox\FirefoxOptions;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\Remote\DesiredCapabilities;

# MySQLサーバ起動判定
exec('mysqladmin ping', $out, $ret);
$out_str = $out[0];
$out_str2 = sprintf("out_str: %s", $out_str);
echo $out_str2;

if(strpos($out[0],'alive') === false){
    exec('mysql.server start');
}else{
    print 'MySQLは起動しています';
    echo "\n";
}

# Webサーバ起動
exec('php -S localhost:8890 -t "/code/PHP/projects/02_mysql_searcher37" > /dev/null &');

# geckodriverのパス設定
putenv('webdriver.gecko.driver=/usr/local/bin/geckodriver');

# オプション設定
$desiredCapabilities = DesiredCapabilities::firefox();
$firefoxOptions = new FirefoxOptions();
$firefoxOptions->addArguments([ '--width=600','--height=400']);
$desiredCapabilities->setCapability(FirefoxOptions::CAPABILITY, $firefoxOptions);

# Firefoxを起動しphpスクリプトを実行
$driver = FirefoxDriver::start($desiredCapabilities);
$driver->get('http://localhost:8890/input.php');

# Firefox表示待機
$driver->wait(10)->until(
    WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::id("form_submit"))
);

sleep(1);
# 自動入力
$driver->findElement(WebDriverBy::id("input1"))->sendKeys("lpw");
sleep(1);
$driver->findElement(WebDriverBy::id("input2"))->sendKeys("Email");
sleep(1);
$driver->findElement(WebDriverBy::id("input3"))->sendKeys("@yahoo.co.jp");
sleep(1);
# 確定ボタン押下
$driver->findElement(WebDriverBy::id("button"))->click();

# search.phpへの遷移待機
$driver->wait(10)->until(
    WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::id("clockTime"))
);

sleep(1);
# 検索ボタン押下
$driver->findElement(WebDriverBy::id("button2"))->click();

?>

参考サイト