geb でchromeブラウザの表示サイズやズームを変更する方法が知りたい

3,630 views
Skip to first unread message

7snow

unread,
Sep 29, 2018, 9:56:10 AM9/29/18
to 日本Seleniumユーザーコミュニティ
お世話になっております。7snowです。(プログラミング初心者になります。)

表題の「geb でchromeブラウザの表示サイズやズームを変更する方法が知りたい」について教えてください。

以前PoohSunnyさんに教えていただいたGebReportingTestでブラウザのキャプチャを実施していますが、表示されるブラウザの幅が狭いため必要な情報がキャプチャできません。
そのため、ブラウザ横幅を広くするか、またはズームを変更し、必要な情報を表示内に収まるようにする必要があるのですが、どのようにコードを記述すればよいかわからないため、どうか教えていただけないでしょうか。(book of geb にてブラウザ操作の方法を探しましたが、探し方が悪いのか見つかりませんでした。

環境:Geb 2.2, ChromeDriver 2.41, Selenium 3.14.0, Groovy 2.4.15

Jun-ichi Sakamoto

unread,
Sep 30, 2018, 9:12:34 PM9/30/18
to 日本Seleniumユーザーコミュニティ
すみません、自分ではちゃんと実証・検証していないのですが、それでも折角なので私案を投稿します。

SendKey 系の Selenium API を使って、表示サイズを変更するキーボードショートカット打鍵を行なうのはいかがでしょうか。

すなわち、「Ctrl + 0」で倍率 100% にリセット、「Ctrl + +」で拡大、「Ctrl + -」で縮小、です。
(※すみません、上記は私の US 配列のキーボードなので、JIS配列とかだとちょっと違うかもしれません)

ずいぶん昔ですが、IE で拡大率が 100% じゃないときに Selenium でのテストがしくじることがあって、それでテストの初期化時に「Ctrl + 0」を SendKeys してかわしてた実績はあります。

参考になれば幸いです。

7snow

unread,
Oct 6, 2018, 12:13:09 AM10/6/18
to 日本Seleniumユーザーコミュニティ
Jun-ichi Sakamotoさん返信ありがとうございます。

gebでのキー入力コードの書き方が分からず、ネットでいろいろ探して試しているところで、つまづいています。

もしコードわかれば教えていただけないでしょうか。

■試したコード

webDriver.FindElement(By.TagName("body")).SendKeys(Keys.Control + "+"+"+");

■エラー内容
groovy.lang.MissingPropertyException: Unable to resolve webDriver as content for geb.Page, or as a property on its Navigator context. Is webDriver a class you forgot to import?

以上、よろしくお願いします。

2018年10月1日月曜日 10時12分34秒 UTC+9 Jun-ichi Sakamoto:

Jun-ichi Sakamoto

unread,
Oct 7, 2018, 8:48:48 AM10/7/18
to 日本Seleniumユーザーコミュニティ
すみません、自分は、geb および Groovy、さらには Java についてはスキルの持ち合わせがないため、回答できないです。

どなたか geb に詳しい方、よろしくお願いします。

あと、続報なのですが、自分で Chrome において Ctrl + + や Ctrl + - などの Zoom 変更のキーボードショートカット打鍵を Selenium 経由で送り込むことで Zoom 変更できるか試したところ、これらキーボードショートカット打鍵は無視されてしまいました。
ということで、いずれにせよこの方法では Zoom 変更はできなさそうです。

それを踏まえ、先ほど、"Selenium Zoom" などのキーワードでネット検索してみましたが、簡単に Zoom 変更する方法を見つけることは、自分にはできませんでした。
ここもどなたか方法ご存じの方がいらっしゃればお知らせいただけるとありがたいですね。

もうひとつ。
今回の目的はスクリーンショットを取るのが目的で、その手段のひとつとして Zoom 変更を考えていましたが、最初の投稿で示されていたように、ブラウザのウィンドウ幅を変更することでも対応できずはずですね。
ということで自分の扱える C# で実践してみましたところ、ブラウザのウィンドウ幅の変更はできました。

geb ではなく C# なのでその点は全くの参考にならないとは思いますが、該当部分のソースコードを念のため下記に貼っておきます。

var driver = new ChromeDriver();
driver.Manage().Window.Position = new Point(0, 0);
driver.Manage().Window.Size = new Size(1366, 768);

これはあくまでも Seleinum WebDriver の機能なので、geb でも同じ事はできるはずです。
ただ、すみません、geb での書き方は自分にはわからないです。

以上、続報までに。

タカミテツロウ

unread,
Oct 7, 2018, 9:21:21 PM10/7/18
to tkd...@gmail.com, selen...@googlegroups.com
@Grab('org.gebish:geb-core')
@Grab('org.seleniumhq.selenium:selenium-chrome-driver')
@Grab('org.gebish:geb-core')

import geb.Browser
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.remote.DesiredCapabilities
import org.openqa.selenium.chrome.ChromeOptions

ChromeOptions chromeOptions = new ChromeOptions()
chromeOptions.addArguments("start-maximized")  
           
DesiredCapabilities capabilities = DesiredCapabilities.chrome()
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions)
           

System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe")
Browser.drive(driver:new ChromeDriver(capabilities)) {
    $('input[name=p]').value('groovy')
    assert $('input[name=p]').value() == 'groovy'
}.quit()


上記コードは 当方の環境では chromeが 最大化で起動します

また、chromeOptions.addArguments("start-maximized") を  
chromeOptions.addArguments("window-size=1280,1024")に みたいに 変えることで
任意のサイズに変更できるみたいですよ

* (geb 初心者なので) 無駄なコードが あるかも知れません…

2018年10月6日(土) 13:13 7snow <tkd...@gmail.com>:
--
このメールは Google グループのグループ「日本Seleniumユーザーコミュニティ」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには seleniumjp+...@googlegroups.com にメールを送信してください。
このグループに投稿するには selen...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

タカミテツロウ

unread,
Oct 8, 2018, 8:35:24 AM10/8/18
to tkd...@gmail.com, selen...@googlegroups.com
@Grab('org.gebish:geb-core')
@Grab('org.seleniumhq.selenium:selenium-chrome-driver')
@Grab('org.gebish:geb-core')

import geb.Browser
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.Dimension;


System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe")
Browser.drive(driver:new ChromeDriver()) {
    driver.manage().window().setSize(new Dimension(1280, 1024));
    $('input[name=p]').value('groovy')
    assert $('input[name=p]').value() == 'groovy'
    
}    

Window サイズの変更は 上記のほうがスマートですね
失礼いたしました


Chromeに ショートカットキーの F11 を 送信して 最大化する方法 (Windowsのみ対応)も
あるのですが 解決済みのようなので …

2018年10月6日(土) 13:13 7snow <tkd...@gmail.com>:
Jun-ichi Sakamotoさん返信ありがとうございます。

--
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
0 new messages