/** Geminiが自動生成した概要 **/
Selenium + php-webdriver + Chromeのバージョンアップ後、`ElementNotInteractableException: element not interactable` エラーが発生。環境は、Ubuntu 22.04.3 LTS, Selenium 4.13.0, php-webdriver 1.15.0, Chrome 117.0.5938.92, PHP 8.2.10, Apache 2.4.57。エラーは `RemoteWebElement->sendKeys()` で発生し、 `<input type="text">` に文字列を入力する箇所で発生。調査の結果、`<input>` の `type` が `hidden` になっていたことが原因。以前のバージョンでは強制的に実行されていたが、バージョンアップによりエラーになった。`readonly` 属性を持つ `<input>` でも同様のエラーが発生する。
カテゴリー : テスト自動化
Selenium + php-webdriverでElementNotInteractableExceptionのエラーにハマった時の対処
Selenium + php-webdriverでWebDriverCurlExceptionのエラーにハマった時の対処
/** Geminiが自動生成した概要 **/
Seleniumとphp-webdriverのバージョンアップ後にWebDriverCurlExceptionが発生した問題の解決策についての記事です。ログイン・ログアウトを繰り返すテストコードで、三回目のログイン時にエラーが発生。調査の結果、セッションの破棄と再生成が必要であることが判明。php-webdriverのquitメソッドを用いてdriverを明示的にquitすることで解決しました。記事では、エラー発生時の環境、テストコード、エラーメッセージ、解決策を詳細に記述しています。
php-webdriverでAceのコードエディタに文字を入力する
/** Geminiが自動生成した概要 **/
`executeScript`は、ChromeDriverでJavaScriptを実行するメソッドです。第一引数に実行するスクリプト、第二引数にオプションの引数配列を取ります。このメソッドは、ブラウザコンテキストでJavaScriptを実行し、その結果を返します。Aceエディタへの入力は、エディタオブジェクトの`setValue`メソッドをJavaScript経由で呼び出すことで実現できます。上記例では、`$script`に`setValue`呼び出しを定義し、`$html`をエディタに設定しています。`executeScript`の第二引数配列は、`$script`内の`arguments`オブジェクトにマッピングされます。これにより、PHPからJavaScript関数をパラメータ付きで実行できます。
php-webdriverでcontent-visibility:auto;を利用しているページのリンクをクリックする
/** Geminiが自動生成した概要 **/
php-webdriverで`content-visibility:auto;`を使用したサイトのリンクをクリックする際、遅延読み込みにより要素が見つからない問題が発生する。`getLocationOnScreenOnceScrolledIntoView()`だけでは不十分で、一度スクロール後にページトップに戻り、再度徐々にスクロールすることで要素を確実に表示させクリックを成功させる方法を紹介。これはページ表示速度の高速化と遅延読み込みによる影響への対策。また、SeleniumによるアクセスをGoogle Analyticsから除外する方法についても言及し、誤った計測を防ぐための設定についても触れている。さらに、関連するelement click interceptedエラーへの対処法の記事へのリンクも提供。
php-webdriverでelement click interceptedのエラーに対して
/** Geminiが自動生成した概要 **/
SeleniumとJenkins、php-webdriver、ヘッドレスChromiumでテスト自動化中に、メモウィジェットが原因でelement click interceptedエラーが発生。ヘッドレスモードで画面サイズが不足し、対象ボタンが隠れていたのが原因。ウィンドウサイズを`1024x2048`に設定することで一時的に解決したが、ページサイズに依存するこの方法は最適ではない。スクロールによる解決策も検討されたが、最終的にはCSSを修正し、メモウィジェットが他のボタンと重ならないように調整することで根本解決した。