ブログ内検索

micro:bitページ
とにかく速いブログサイトを目指す

カテゴリー : テスト自動化

SOY CMSマニュアルページ作成中

SOY CMSの開発秘話を投稿しました。→SOY CMSの開発秘話
 

Selenium + php-webdriverでElementNotInteractableExceptionのエラーにハマった時の対処

/** 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で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を修正し、メモウィジェットが他のボタンと重ならないように調整することで根本解決した。

 

Jenkins + ヘッドレスChromeでテスト自動化の省力化

/** Geminiが自動生成した概要 **/
JenkinsによるSOY CMS/Shopのテスト自動化で、ビルド時間が5時間超となり、Chromeのクラッシュが発生していた。メモリ使用量削減のため、ヘッドレスChromeを導入。php-webdriverのコードにChromeOptionsを追加することで、ヘッドレスChromeでのテスト実行が可能になった。仮想デスクトップ(Xvfb)も不要となり、メモリ使用量が削減され、格安VPSでの高負荷テスト継続に期待が持てる。

 

Go言語 + Selenium + Agoutiでテスト自動化

Go言語 + Selenium + AgoutiでSOY CMSにログイン出来なかった時に適切にエラーを表示するかを確認してみる。package mainimport ("log""strings""github.com/sclevine/agouti")//SOY CMSにログインできなかた時に適切にエラーを表示するか?テストfunc main() {driver := agouti.ChromeDriver()err := driver.Start()if err

 

Go言語 + Selenium + Agoutiで自動でGoogle検索

前回の続きで、seleniumでグーグル検索した後、検索フォームにseleniumuと入力してボタンを押してみる。下記のコードを入力する。package mainimport ("log""github.com/sclevine/agouti")func main() {driver := agouti.ChromeDriver()err := driver.Start()if err != nil {log.Fatal(err)}page, err := dri

 

Go言語 + Selenium + Agoutiでブラウザ操作の自動化

Selenium - Web Browser Automationhttps://agouti.org/Go言語でSeleniumとAgoutiを介してChromeブラウザを自動で操作してみる。SeleniumはJava上でなければ動作しないため、はじめにJavaをインストールする。Javaは下記のページからダウンロードして、画面の指示に従ってインストールする。無料Javaソフトウェアをダウンロード続いて、seleniumu-serverをhttps://www.sele

 

php-webdriverでセレクトボックスの値を選択する2

<select name="Customer[area]" id="" class="input-pref"><option value="">都道府県名</option><option value="1">北海道</option><option value="2">青森県</option><option value="3">岩手県</option>&

 

php-webdriverでiframe内のリダイレクトに対応する

SOY CMSでは、ラベルブロックの設定あたりでiframeを開いて、iframe内でリダイレクトしながら設定を進める画面がある。iframeは以前にTinyMCEのところで操作方法を調べたので、iframe一ページ分であればなんとかなったけれども、php-webdriverでTinyMCEに値を挿入するiframe内でリダイレクトがあると、2枚目のページで指定した要素が見つからないというエラーに遭遇する。なんでだろうと試行錯誤試し

 

php-webdriverで現在開いているページのURLを取得する

php-webdriverで現在開いているページのURLを取得する必要が出てきた。SOY CMSの管理画面では、記事やラベルの詳細ページを開くとURLの末尾に各々のIDが付与されているため、URLから指定の記事、もしくはラベルのIDを取得するためにはURLを取得しなければならない。SOY CMSで標準ページでも任意のブログページのb_blockを使用できるようにしたというわけで、php-webdriverの公式Wikiを調べてみたところ、WebDriver

 

php-webdriverでTinyMCEに値を挿入する

php-webdriverでSOY CMSの記事作成画面のテストコードを作成する時に苦戦した。php-webdriverでconfirmダイアログをクリックするどこで苦戦したか?というと、記事作成画面の本文に値を入力するところで、SOY CMSの記事作成画面ではTinyMCEというWYSIWYGエディタを利用していて、SOY CMSの記事投稿画面でYouTubeの動画の挿入ボタンを追加しましたTinyMCE | The Most Advanced WYSI

 

レバテックキャリアさんの技術ブログで当ブログのGo言語の記事が紹介されました

IT・Webの転職・求人のレバテックさんが運営するレバテックキャリアさんのブログのGo言語を勉強中という方に読んでほしい記事まとめの企画で当ブログのGo言語の記事が紹介されました。Go言語を勉強中という方に読んでほしい記事まとめ - レバテックキャリア紹介された記事はGo言語の標準機能のユニットテストを試してみた記事で、実際に自分がテストコードを作成した時のフローを紹介が良かったみたいです。golangでテストを書いてみたのでメモ企画内のちょっとした紹介ではありま

 

Jenkinsらをバージョンアップした後、エラーで動かなくなった時の対処

JenkinsJenkinsを開いたら新しいバージョンが公開されたということでアップグレードの通知が表示されていた。Jenkinsをインストールしているサーバにリモートアクセスして、Jenkinsのバージョンアップをしたら突然動かなくなった。エラーメッセージを見たら下記の通り。PHP Fatal error: Uncaught Facebook\WebDriver\Exception\UnknownServerException: unknown error: c

 

Jenkinsの動作が遅くなった時の対処

さくらVPSにJenkinsを入れて、Selenium + php-webdriverを動かせるようにするでVPSサーバを借りてJenkins用のサーバを組み立ててみた。継続的インテグレーションに従い、細かい機能追加の度にGitでコミットを行うことで、機能追加により以前の機能が動作しないといった致命的な不具合の心配がなくなった。継続的インテグレーション - Wikipedia一人で開発している身として、Jenkinsが相棒のように感じられるようになったわけだけど、

 

php-webdriverでconfirmダイアログをクリックする

php-webdriverでセレクトボックスの値を選択するから引き続きメモブラウザ上で何らかのボタンをクリックすると、上の画像のように確認用のダイアログが表示されて、このダイアログ上のボタンをクリックすることがあります。このダイアログのボタンをphp-webdriverでクリックするためには下記のようなコードを書けば良い。※今回は「退会する」リンクをクリックした時にconfirmのダイアログが表示される$driver->findElement(WebDr

 

php-webdriverでセレクトボックスの値を選択する

php-webdriverでtarget="_blank"付きのアンカータグ対策から引き続きメモ今回はセレクトボックスの値を選択してみる。セレクトボックスは今までのinputタグと異なり、セレクトボックスの場所を指定して、キーボード操作で値を選択するという形で、値の指定の際の操作が増える。該当する箇所のHTMLは<select name="Customer[area]" id="" class="input-pref"><optio

 

さくらVPSにJenkinsを入れて、Selenium + php-webdriverを動かせるようにする

さくらVPS上でSeleniumとphp-webdriverを利用する前回、さくらのVPSにSeleniumとphp-webdriverを実行するための環境を設けた。あとはJenkinsを入れるだけだ。環境さくらVPS 512Ubuntu 16.04Java 1.8.0_151Jenkins 2.76Selenium 3.7.1Xvfb バージョンの調べ方わからずChromeドライバ 2.33.506092Chromium 62.0

 

さくらVPS上でSeleniumとphp-webdriverを利用する

Selenium - Web Browser Automation最近の記事でSOY CMS / ShopのUIテストをSeleniumのGUI(Firefoxのアドオン)からFacebook製のphp-webdriverへと作り変えた。facebook/php-webdriver: A php client for webdriver.テストを作ったのは良いけれど、ローカル環境だとテスト中に他の作業ができなくなるので、さくらのVPSを借りてSeleniumを動かせる

 

php-webdriverでtarget="_blank"付きのアンカータグ対策

php-webdriverで任意のラジオボタンをチェックする前回より引き続き、Seleniumとphp-webdriverのメモ例えば、<a href="sample.html" id="link">リンク</a>というコードがあったとします。このリンクをクリックして他のページに遷移したい場合は、php-webdriverでは、$driver->getElement(WebDriverBy::linkText("リンク")

 

php-webdriverで任意のラジオボタンをチェックする

php-webdriverでSOY CMSにログインしてみる前回、任意の入力フォームを選んで値を入力して、任意のボタンを押すという動作をSeleniumとphp-webdriverで自動化してみた。UIテストの大体の動作は前々回のフォームの内容を取得すると合わせれば対応できるが、これでは対応できないものがあった。それは、性別などで使われるラジオボタンです。ラジオボタンのHTMLを抜き出してみると、<input type="radi

 

php-webdriverでSOY CMSにログインしてみる

php-webdriverで指定のフォームに値を入力してみる前回、Selenium + php-webdriverでSOY CMSのログイン画面でログインIDのフォームに値を入れ、フォームの値を取り出して端末上に書き出すという処理を書いてみた。今回はログインIDとパスワードを入力して、ログインボタンを押してログインを試してみる。実際のコードは下記の通り、※管理画面へログインできるアカウントをID、Pw共に「soycms」とします<?php

 

php-webdriverで指定のフォームに値を入力してみる

Seleniumとphp-webdriverでUIテストの自動化でSelenium、Chromeドライバとphp-webdriverをインストールした。今回は基本的な動作分を確認ワークスペースが~/workspace/soycms/で、テストコードはsoycmsディレクトリ以下にtestというディレクトリを作成して、テストコードを~/workspace/soycms/test/test.phpにしてファイルを作成してみる。※soycmsディレクトリ内にSOY CMSを

 

Seleniumとphp-webdriverでUIテストの自動化

アプリ開発において自動化しておきたいものにテストの自動化がある。今までSOY CMS / ShopはSeleniumのFirefoxプラグインでGUIで一つずつ動作を登録しながらUIのテストコードを作成していたけれども、Selenium - Web Browser AutomationJenkinsさんのお力を借りて、JenkinsさんにSeleniumを実行してもらうべく、PHPのコードでSeleniumのUIテストのコードを書き直すことにした。Jenk

 

golangでテストを書いてみたのでメモ

golang(Go言語)ではテストが標準で用意されており、テストコードを書くのが簡単ということで書いてみた。まずはgoというフォルダを作成して、sample.goというファイルを作成してみた。go└── sample.goディレクトリ構造はこんな感じ。sample.goに下記の様なランダムな文字列を作成して、作成した文字列をMD5でハッシュ化して表示するというコードを用意した。package mainimport ("fmt""cryp


Powered by SOY CMS  ↑トップへ