public abstract class PtlWebDriver
extends org.openqa.selenium.remote.RemoteWebDriver
RemoteWebDriver
の機能に加え、表示中のWebページに関する情報取得、ブラウザの差異を吸収したスクリーンショットの撮影を行います。org.openqa.selenium.remote.RemoteWebDriver.RemoteTargetLocator, org.openqa.selenium.remote.RemoteWebDriver.RemoteWebDriverOptions, org.openqa.selenium.remote.RemoteWebDriver.When
org.openqa.selenium.WebDriver.ImeHandler, org.openqa.selenium.WebDriver.Navigation, org.openqa.selenium.WebDriver.Options, org.openqa.selenium.WebDriver.TargetLocator, org.openqa.selenium.WebDriver.Timeouts, org.openqa.selenium.WebDriver.Window
修飾子とタイプ | フィールドと説明 |
---|---|
static double |
DEFAULT_SCREENSHOT_SCALE
スクリーンショット画像とブラウザの表示領域のサイズ比。
|
protected org.slf4j.Logger |
LOG |
修飾子 | コンストラクタと説明 |
---|---|
protected |
PtlWebDriver(org.openqa.selenium.remote.CommandExecutor executor,
PtlCapabilities capabilities)
コンストラクタ
|
protected |
PtlWebDriver(java.net.URL remoteAddress,
PtlCapabilities capabilities)
コンストラクタ
|
修飾子とタイプ | メソッドと説明 |
---|---|
protected double |
calcScale(double windowWidth,
double imageWidth)
viewport内の表示領域とスクリーンショットのサイズ比を計算します。
|
protected int |
calcTrimLeft(int imageWidth,
long scrollAmount,
PtlWebElement targetElement,
double currentScale)
画像の幅、スクロール量、要素のボーダー幅から横のトリム量を計算します。
|
protected int |
calcTrimTop(int imageHeight,
long scrollAmount,
PtlWebElement targetElement,
double currentScale)
画像の高さ、スクロール量、要素のボーダー幅から縦のトリム量を計算します。
|
protected boolean |
canHideBodyScrollbar()
bodyのスクロールバーを非表示にできるブラウザかどうかを取得します。
|
protected boolean |
canHideElementScrollbar()
要素のスクロールバーを非表示にできるブラウザかどうかを取得します。
|
protected boolean |
canMoveTarget()
要素を移動可能なブラウザかどうかを取得します。
|
protected boolean |
canResizeElement()
要素をリサイズできるブラウザかどうかを取得します。
|
protected ScreenAreaResult |
createExcludeScreenAreaResult(ScreenAreaWrapper target,
java.lang.Integer index) |
protected ScreenAreaResult |
createScreenAreaResult(ScreenAreaWrapper target,
java.lang.Integer index)
ScreenAreaWrapper からScreenAreaResult を生成します。 |
<T> T |
executeAsyncJavaScript(java.lang.String script,
java.lang.Object... params) |
java.lang.Object |
executeAsyncScript(java.lang.String script,
java.lang.Object... args) |
<T> T |
executeJavaScript(java.lang.String script,
java.lang.Object... params) |
java.lang.Object |
executeScript(java.lang.String script,
java.lang.Object... args) |
protected java.util.List<PtlWebElement> |
findElementsByDomSelectors(java.util.List<DomSelector> selectors)
DomSelector を指定して対応する要素の一覧を取得します。 |
void |
get(java.lang.String url)
指定されたURLをブラウザで開きます。
|
protected java.lang.String |
getBaseUrl()
テスト対象アプリケーションのベースURLを取得します。
|
PtlCapabilities |
getCapabilities()
Capabilityを取得します。
|
ClientRect |
getCurrentBodyClientRect()
現在のbodyのサイズを取得します。
|
long |
getCurrentPageHeight()
現在のページの高さを取得します。
|
long |
getCurrentPageWidth()
現在のページの幅を取得します。
|
double |
getCurrentScrollLeft()
現在表示位置の左端座標を取得します。
|
double |
getCurrentScrollTop()
現在表示位置の上端座標を取得します。
|
java.awt.image.BufferedImage |
getEntirePageScreenshot()
画面全体のスクリーンショットを撮影し、
BufferedImage として返します。 |
protected java.awt.image.BufferedImage |
getMinimumScreenshot(ScreenshotParams params)
パラメータで指定された要素を含む最小範囲でスクリーンショットを撮影し、
BufferedImage として返します。 |
org.openqa.selenium.Capabilities |
getRawCapabilities()
RemoteWebDriverが保持しているCapabilityを取得します。
|
<X> X |
getScreenshotAs(org.openqa.selenium.OutputType<X> outputType) |
protected java.awt.image.BufferedImage |
getScreenshotAsBufferedImage()
スクリーンショットを撮影し、
BufferedImage として取得します。 |
protected ScreenshotImage |
getScreenshotImage(ScreenshotParams params,
ScreenshotParams... additionalParams)
スクリーンショットを撮影し、
ScreenshotImage として取得します。 |
protected java.awt.image.BufferedImage |
getScreenshotInternal(ScreenshotParams params,
ScreenshotParams... additionalParams)
対象領域を定位置(0, 0)に移動し、スクリーンショットを撮影します。
|
protected java.awt.image.BufferedImage |
getScreenshotInternalWithoutMoving(ScreenshotParams params,
ScreenshotParams... additionalParams)
対象領域を移動せずにスクリーンショットを撮影します。
|
protected double |
getScreenshotScale()
スクリーンショットとviewportのサイズ比を取得します。
|
long |
getScrollHeight()
ページのscrollHeightを取得します。
|
long |
getScrollNum()
ページのスクロール回数を取得します。
|
long |
getScrollWidth()
ページのscrollWidthを取得します。
|
protected TargetResult |
getTargetResult(CompareTarget compareTarget,
java.util.List<DomSelector> hiddenElementSelectors,
ScreenshotParams params,
ScreenshotImage image)
スクリーンショットを受け取り、ターゲットの領域を切り抜いて
TargetResult として返します。 |
protected TargetResult |
getTargetResult(CompareTarget compareTarget,
java.util.List<DomSelector> hiddenElementSelectors,
ScreenshotParams params,
ScreenshotParams... additionalParams)
一つのターゲットに対するスクリーンショットを撮影し、
TargetResult として取得します。 |
long |
getWindowHeight()
可視領域の高さを取得します。
|
long |
getWindowWidth()
可視領域の幅を取得します。
|
protected boolean |
isHideElementsRequired()
要素を非表示にする必要があるブラウザかどうかを取得します。
|
protected boolean |
isMoveTargetRequired(ScreenshotParams params)
スクリーンショット撮影時に、対象領域を定位置に移動させるか否かを調べます。
|
protected boolean |
isScrollTargetRequired(ScreenshotParams params)
スクリーンショット撮影時に、対象領域をスクロールさせるか否かを調べます。
|
protected abstract PtlWebElement |
newPtlWebElement()
driverに対応するWebElementを生成します。
|
protected void |
resetScreenshotScale()
スクリーンショットとviewportのサイズ比を初期値に戻します。
|
void |
scrollTo(double x,
double y)
画面上の特定の位置にスクロールします。
|
protected void |
setBaseUrl(java.lang.String baseUrl)
テスト対象アプリケーションのベースURLを設定します。
|
protected void |
setEnvironmentConfig(EnvironmentConfig environmentConfig)
環境情報を設定します。
|
protected void |
setScreenshotScale(double screenshotScale)
スクリーンショットとviewportのサイズ比を設定します。
|
protected TargetResult |
takeMoveScreenshots(CompareTarget target,
java.util.List<DomSelector> hiddenElementSelectors,
ScreenshotParams params)
isMoveがtrueに指定されているターゲットを撮影するメソッド。
|
protected java.util.List<TargetResult> |
takeNonMoveScreenshots(TargetResult entireScreenshotResult,
java.util.List<DomSelector> hiddenElementSelectors,
ScreenshotParams entireScreenshotParams,
java.util.List<org.apache.commons.lang3.tuple.Pair<CompareTarget,ScreenshotParams>> targetParams)
isMoveがfalseに指定されているターゲットを一括で撮影するメソッド。
|
ScreenshotResult |
takeScreenshot(ScreenshotArgument arg)
スクリーンショットの撮影条件を指定してスクリーンショットを撮影します。
|
ScreenshotResult |
takeScreenshot(java.lang.String screenshotId)
画面全体のスクリーンショットを撮影します。
|
ScreenshotResult |
takeScreenshot(java.lang.String screenshotId,
CompareTarget[] compareTargets)
指定範囲のスクリーンショットを撮影します。
|
ScreenshotResult |
takeScreenshot(java.lang.String screenshotId,
CompareTarget[] compareTargets,
DomSelector[] hiddenElementsSelectors)
撮影時に非表示にする要素を指定し、指定範囲のスクリーンショットを撮影します。
|
ScreenshotResult |
takeScreenshot(java.lang.String screenshotId,
java.util.List<CompareTarget> compareTargets)
指定範囲のスクリーンショットを撮影します。
|
ScreenshotResult |
takeScreenshot(java.lang.String screenshotId,
java.util.List<CompareTarget> compareTargets,
java.util.List<DomSelector> hiddenElementSelectors)
撮影時に非表示にする要素を指定し、指定範囲のスクリーンショットを撮影します。
|
protected void |
trimBottomImage(java.util.List<java.awt.image.BufferedImage> images,
long lastScrollAmount,
PtlWebElement el,
double currentScale)
指定されたリスト内の最後の画像の高さ、スクロール量、ボーダー幅から
トリム量を計算し、縦の重複をトリムします。 |
protected void |
trimMoveBorder(org.openqa.selenium.WebElement el,
java.util.List<java.awt.image.BufferedImage> images,
double currentScale)
isMoveがtrueのとき、要素のborderを切り取る処理をします。
|
protected void |
trimMovePadding(org.openqa.selenium.WebElement el,
java.util.List<java.awt.image.BufferedImage> images)
isMoveがtrueのとき、要素のpaddingを切り取る処理をします。
|
protected void |
trimNonMoveBorder(java.util.List<java.util.List<java.awt.image.BufferedImage>> allTargetScreenshots,
java.util.List<org.apache.commons.lang3.tuple.Pair<CompareTarget,ScreenshotParams>> targetParams,
double currentScale)
isMoveがfalseのとき、要素のborderを切り取る処理をします。
|
protected void |
trimNonMovePadding(java.util.List<java.util.List<java.awt.image.BufferedImage>> allTargetScreenshots,
java.util.List<org.apache.commons.lang3.tuple.Pair<CompareTarget,ScreenshotParams>> targetParams)
isMoveがfalseのとき、要素のpaddingを切り取る処理をします。
|
protected java.awt.image.BufferedImage |
trimOverlap(double captureTop,
double captureLeft,
long windowHeight,
long windowWidth,
double currentScale,
java.awt.image.BufferedImage img)
次のキャプチャ開始位置と今回キャプチャした範囲を比較し、重なる部分がある場合は切り取ります。
|
protected void |
trimRightImage(java.util.List<java.awt.image.BufferedImage> images,
long lastScrollAmount,
PtlWebElement el,
double currentScale)
指定されたリスト内の最後の画像の幅、スクロール量、ボーダー幅から
トリム量を計算し、横の重複をトリムします。 |
protected java.awt.image.BufferedImage |
trimTargetBorder(org.openqa.selenium.WebElement el,
java.awt.image.BufferedImage image,
int num,
int size,
double currentScale)
要素の部分スクロール時、元画像からボーダーを切り取ります。
|
protected java.awt.image.BufferedImage |
trimTargetPadding(org.openqa.selenium.WebElement el,
java.awt.image.BufferedImage image,
int num,
int size)
要素の部分スクロール時、元画像からPaddingを切り取ります。
|
close, execute, execute, findElement, findElement, findElementByClassName, findElementByCssSelector, findElementById, findElementByLinkText, findElementByName, findElementByPartialLinkText, findElementByTagName, findElementByXPath, findElements, findElements, findElementsByClassName, findElementsByCssSelector, findElementsById, findElementsByLinkText, findElementsByName, findElementsByPartialLinkText, findElementsByTagName, findElementsByXPath, getCommandExecutor, getCurrentUrl, getElementConverter, getErrorHandler, getExecuteMethod, getFileDetector, getKeyboard, getMouse, getPageSource, getSessionId, getTitle, getWindowHandle, getWindowHandles, log, manage, navigate, perform, quit, resetInputState, setCommandExecutor, setElementConverter, setErrorHandler, setFileDetector, setFoundBy, setLogLevel, setSessionId, startClient, startClient, startSession, stopClient, stopClient, switchTo, toString
public static final double DEFAULT_SCREENSHOT_SCALE
protected final org.slf4j.Logger LOG
protected PtlWebDriver(java.net.URL remoteAddress, PtlCapabilities capabilities)
remoteAddress
- RemoteWebDriverServerのアドレスcapabilities
- Capabilityprotected PtlWebDriver(org.openqa.selenium.remote.CommandExecutor executor, PtlCapabilities capabilities)
executor
- CommandExecutorcapabilities
- Capabilityprotected java.lang.String getBaseUrl()
TestAppConfig.baseUrl
protected void setBaseUrl(java.lang.String baseUrl)
baseUrl
- テスト対象アプリケーションのベースURLTestAppConfig.baseUrl
protected final void setEnvironmentConfig(EnvironmentConfig environmentConfig)
environmentConfig
- 環境情報public void get(java.lang.String url)
baseUrl
+ urlのアドレスを開きます。get
インタフェース内 org.openqa.selenium.WebDriver
get
クラス内 org.openqa.selenium.remote.RemoteWebDriver
url
- 開きたいURLpublic PtlCapabilities getCapabilities()
getCapabilities
インタフェース内 org.openqa.selenium.HasCapabilities
getCapabilities
クラス内 org.openqa.selenium.remote.RemoteWebDriver
public org.openqa.selenium.Capabilities getRawCapabilities()
public <X> X getScreenshotAs(org.openqa.selenium.OutputType<X> outputType) throws org.openqa.selenium.WebDriverException
getScreenshotAs
インタフェース内 org.openqa.selenium.TakesScreenshot
getScreenshotAs
クラス内 org.openqa.selenium.remote.RemoteWebDriver
org.openqa.selenium.WebDriverException
protected boolean canMoveTarget()
protected boolean canHideBodyScrollbar()
protected boolean canHideElementScrollbar()
protected boolean isHideElementsRequired()
protected boolean canResizeElement()
public <T> T executeJavaScript(java.lang.String script, java.lang.Object... params)
T
- 実行結果の型script
- 実行するJavaScriptparams
- スクリプトに渡すパラメータJavascriptExecutor.executeScript(String, Object...)
public java.lang.Object executeScript(java.lang.String script, java.lang.Object... args)
executeScript
インタフェース内 org.openqa.selenium.JavascriptExecutor
executeScript
クラス内 org.openqa.selenium.remote.RemoteWebDriver
public <T> T executeAsyncJavaScript(java.lang.String script, java.lang.Object... params)
T
- 実行結果の型script
- 実行するJavaScriptparams
- スクリプトに渡すパラメータJavascriptExecutor.executeAsyncScript(String, Object...)
public java.lang.Object executeAsyncScript(java.lang.String script, java.lang.Object... args)
executeAsyncScript
インタフェース内 org.openqa.selenium.JavascriptExecutor
executeAsyncScript
クラス内 org.openqa.selenium.remote.RemoteWebDriver
public ScreenshotResult takeScreenshot(java.lang.String screenshotId)
screenshotId
- スクリーンショットIDpublic ScreenshotResult takeScreenshot(java.lang.String screenshotId, CompareTarget[] compareTargets)
screenshotId
- スクリーンショットIDcompareTargets
- 撮影対象とする範囲public ScreenshotResult takeScreenshot(java.lang.String screenshotId, java.util.List<CompareTarget> compareTargets)
screenshotId
- スクリーンショットIDcompareTargets
- 撮影対象とする範囲public ScreenshotResult takeScreenshot(java.lang.String screenshotId, CompareTarget[] compareTargets, DomSelector[] hiddenElementsSelectors)
screenshotId
- スクリーンショットIDcompareTargets
- 撮影対象とする範囲hiddenElementsSelectors
- 撮影時に非表示にする要素public ScreenshotResult takeScreenshot(ScreenshotArgument arg)
arg
- スクリーンショット撮影条件public ScreenshotResult takeScreenshot(java.lang.String screenshotId, java.util.List<CompareTarget> compareTargets, java.util.List<DomSelector> hiddenElementSelectors)
screenshotId
- スクリーンショットIDcompareTargets
- 撮影対象とする範囲hiddenElementSelectors
- 撮影時に非表示にする要素protected java.util.List<TargetResult> takeNonMoveScreenshots(TargetResult entireScreenshotResult, java.util.List<DomSelector> hiddenElementSelectors, ScreenshotParams entireScreenshotParams, java.util.List<org.apache.commons.lang3.tuple.Pair<CompareTarget,ScreenshotParams>> targetParams)
entireScreenshotResult
- 予めページ全体を撮影した際のTargetResulthiddenElementSelectors
- 撮影時に非表示にする要素のリストtargetParams
- 撮影対象のターゲットリストentireScreenshotParams
- ページ全体撮影用のパラメータprotected TargetResult takeMoveScreenshots(CompareTarget target, java.util.List<DomSelector> hiddenElementSelectors, ScreenshotParams params)
target
- 撮影対象のターゲットhiddenElementSelectors
- 撮影時に非表示にする要素のリストparams
- 撮影対象のパラメータprotected void trimBottomImage(java.util.List<java.awt.image.BufferedImage> images, long lastScrollAmount, PtlWebElement el, double currentScale)
images
- 対象の画像lastScrollAmount
- 最後のスクロール量el
- 撮影対象の要素currentScale
- 表示領域とスクリーンショットのサイズ比protected void trimRightImage(java.util.List<java.awt.image.BufferedImage> images, long lastScrollAmount, PtlWebElement el, double currentScale)
images
- 対象の画像lastScrollAmount
- 最後のスクロール量el
- 撮影対象の要素currentScale
- 表示領域とスクリーンショットのサイズ比protected java.awt.image.BufferedImage trimTargetBorder(org.openqa.selenium.WebElement el, java.awt.image.BufferedImage image, int num, int size, double currentScale)
el
- 対象の要素image
- 元画像num
- 何スクロール目の画像化size
- 全体のスクロール数protected java.awt.image.BufferedImage trimTargetPadding(org.openqa.selenium.WebElement el, java.awt.image.BufferedImage image, int num, int size)
el
- 対象の要素image
- 元画像num
- 何スクロール目の画像かsize
- 全体のスクロール数protected void trimNonMoveBorder(java.util.List<java.util.List<java.awt.image.BufferedImage>> allTargetScreenshots, java.util.List<org.apache.commons.lang3.tuple.Pair<CompareTarget,ScreenshotParams>> targetParams, double currentScale)
allTargetScreenshots
- 撮影した全スクリーンショットtargetParams
- 撮影対象のターゲットリストprotected void trimMoveBorder(org.openqa.selenium.WebElement el, java.util.List<java.awt.image.BufferedImage> images, double currentScale)
el
- ターゲットの要素images
- 撮影したスクリーンショットprotected void trimNonMovePadding(java.util.List<java.util.List<java.awt.image.BufferedImage>> allTargetScreenshots, java.util.List<org.apache.commons.lang3.tuple.Pair<CompareTarget,ScreenshotParams>> targetParams)
allTargetScreenshots
- 撮影した全スクリーンショットtargetParams
- 撮影対象のターゲットリストprotected void trimMovePadding(org.openqa.selenium.WebElement el, java.util.List<java.awt.image.BufferedImage> images)
el
- ターゲットの要素images
- 撮影したスクリーンショットprotected java.awt.image.BufferedImage trimOverlap(double captureTop, double captureLeft, long windowHeight, long windowWidth, double currentScale, java.awt.image.BufferedImage img)
captureTop
- 今回のキャプチャ開始位置(上)captureLeft
- 今回のキャプチャ開始位置(左)windowHeight
- ウィンドウ(viewport内の表示領域)の高さwindowWidth
- ウィンドウ(viewport内の表示領域)の幅currentScale
- ウィンドウとスクリーンショットのサイズ比img
- スクリーンショット画像protected TargetResult getTargetResult(CompareTarget compareTarget, java.util.List<DomSelector> hiddenElementSelectors, ScreenshotParams params, ScreenshotParams... additionalParams)
TargetResult
として取得します。compareTarget
- 撮影対象とする範囲hiddenElementSelectors
- 撮影時に非表示にする要素のセレクタのリストparams
- スクリーンショットを撮影するためのパラメーターadditionalParams
- 追加のスクリーンショット撮影用パラメータ。スクリーンショットはparams
に設定した情報から撮影しますが、同時にこの引数に設定したパラメータの座標情報が更新されます。protected TargetResult getTargetResult(CompareTarget compareTarget, java.util.List<DomSelector> hiddenElementSelectors, ScreenshotParams params, ScreenshotImage image)
TargetResult
として返します。compareTarget
- 撮影対象の範囲hiddenElementSelectors
- 撮影時に非表示にする要素のセレクタのリストparams
- スクリーンショットを撮影するためのパラメーターimage
- スクリーンショット画像TargetResult
オブジェクトprotected ScreenAreaResult createScreenAreaResult(ScreenAreaWrapper target, java.lang.Integer index)
ScreenAreaWrapper
からScreenAreaResult
を生成します。target
- 元となるScreenAreaWrapperindex
- 対象とする要素のインデックスScreenAreaResult
protected ScreenAreaResult createExcludeScreenAreaResult(ScreenAreaWrapper target, java.lang.Integer index)
protected ScreenshotImage getScreenshotImage(ScreenshotParams params, ScreenshotParams... additionalParams)
ScreenshotImage
として取得します。params
- スクリーンショット撮影用パラメータadditionalParams
- 追加のスクリーンショット撮影用パラメータ。スクリーンショットはparams
に設定した情報から撮影しますが、同時にこの引数に設定したパラメータの座標情報が更新されます。protected boolean isMoveTargetRequired(ScreenshotParams params)
params
- スクリーンショット撮影用パラメータprotected boolean isScrollTargetRequired(ScreenshotParams params)
params
- スクリーンショット撮影用パラメータprotected java.awt.image.BufferedImage getScreenshotInternalWithoutMoving(ScreenshotParams params, ScreenshotParams... additionalParams)
params
- スクリーンショット撮影用パラメータadditionalParams
- スクリーンショット撮影用パラメータprotected java.awt.image.BufferedImage getScreenshotInternal(ScreenshotParams params, ScreenshotParams... additionalParams)
params
- スクリーンショット撮影用パラメータadditionalParams
- スクリーンショット撮影用パラメータprotected java.util.List<PtlWebElement> findElementsByDomSelectors(java.util.List<DomSelector> selectors)
DomSelector
を指定して対応する要素の一覧を取得します。selectors
- 取得する要素のセレクタのリストpublic ClientRect getCurrentBodyClientRect()
protected double getScreenshotScale()
protected void setScreenshotScale(double screenshotScale)
screenshotScale
- スクリーンショットとviewportのサイズ比protected void resetScreenshotScale()
public java.awt.image.BufferedImage getEntirePageScreenshot()
BufferedImage
として返します。protected java.awt.image.BufferedImage getMinimumScreenshot(ScreenshotParams params)
BufferedImage
として返します。params
- スクリーンショット撮影用パラメータprotected java.awt.image.BufferedImage getScreenshotAsBufferedImage()
BufferedImage
として取得します。public double getCurrentScrollTop()
public double getCurrentScrollLeft()
public long getWindowWidth()
public long getWindowHeight()
public long getScrollWidth()
public long getScrollHeight()
public long getScrollNum()
public long getCurrentPageWidth()
public long getCurrentPageHeight()
public void scrollTo(double x, double y) throws java.lang.InterruptedException
x
- スクロール先のx座標(実数px)y
- スクロール先のy座標(実数px)java.lang.InterruptedException
- スクロール中に例外が発生した場合protected double calcScale(double windowWidth, double imageWidth)
windowWidth
- ウィンドウ(viewport内の表示領域)の幅imageWidth
- スクリーンショットの幅protected int calcTrimTop(int imageHeight, long scrollAmount, PtlWebElement targetElement, double currentScale)
imageHeight
- 元画像の高さscrollAmount
- 最後のスクロール量targetElement
- ターゲットcurrentScale
- 表示領域とスクリーンショットのサイズ比protected int calcTrimLeft(int imageWidth, long scrollAmount, PtlWebElement targetElement, double currentScale)
imageWidth
- 元画像の幅scrollAmount
- 最後のスクロール量targetElement
- ターゲット(nullの場合は無視)currentScale
- 表示領域とスクリーンショットのサイズ比protected abstract PtlWebElement newPtlWebElement()