JBossでWebサービスクライアントを作成する
mabushiisign
眩しいサインを見ただろう
Seleniumを使ったテストの記述を楽にしてくれるSelenideを使ってみました。
スクリーンショットも簡単に取ることができます。
1Selenide.screenshot("toppage");
これだけで、画像とhtmlソースがbuild/reports/tests/ フォルダに toppage.png, toppage.htmlとして保存してくれます。
これで取った画像サイズが、Windowサイズになってしまいます。デフォルトでは「1366×768」。
実行時であれば
1Configuration.browserSize = "1366x1200";
でWindowサイズを変更できるのですが、対象の画面によって縦サイズは変わるので予め決めておくのは現実的ではありません。
ブラウザのWindowを動的に変えれればいいのですがどうやればいいのでしょうか。
思いつくのは、表示された後、対象の画面のbodyのサイズを取得し、Windowサイズを変更すればよいというものです。
WebDriverの機能にそのままのものがありません。
JavaScriptであれば取得できるので、JavaScriptを実行してその結果を取れればいいと思います。
Selenide.executeJavaScriptメソッドでJavaScriptを実行し、その結果を取得します。
1int width = ((Number) Selenide.executeJavaScript("return document.body.clientWidth")).intValue();
2int height = ((Number) Selenide.executeJavaScript("return document.body.clientHeight")).intValue();
3System.out.println(width + "x" + height);
こちらは、設定する場所を見つけるのが面倒でしたが、WebDriverのメソッドで可能です。
1WebDriverRunner.getWebDriver().manage().window().setSize(new Dimension(width, height));
単純に画面にアクセスし、全画面キャプチャを取得するコードはこうなります。
1Configuration.browser = Browsers.CHROME;
2Configuration.headless = true;
3
4Selenide.open("http://www.yahoo.co.jp/");
5
6int width = ((Number) Selenide.executeJavaScript("return document.body.clientWidth")).intValue();
7int height = ((Number) Selenide.executeJavaScript("return document.body.clientHeight")).intValue();
8WebDriverRunner.getWebDriver().manage().window().setSize(new Dimension(width, height));
9
10Selenide.screenshot("yahoo");
これで、テストなどを行う基本的な準備が出来たかなと思います。