やりたいこと
selenium(ブラウザ自動化フレームワーク)で、クライアントウィンドウサイズの設定をしたい。
(タブやURLなどを含めた、「実際の」windowサイズを設定の設定は簡単にできます。ただ、実際のHTMLが表示される「内部の」windowサイズを指定するのが少しだけ面倒です)
コード
実際のウィンドウサイズと内部のウィンドウサイズの差分をとることで、外枠の大きさを得られます。
あとは設定したいサイズに外枠を足せば、設定するべき実際の画面サイズがわかります。
pythonで書きます
width = 600 # 設定したい内部の横幅(ClientWidth)
height = 400 # 設定したい内部の縦幅(ClientHeight)
driver = webdriver.Chrome(options=options) # 設定は省略
# 現在のwindowサイズをdriverから抜き出す
current_window_size = driver.get_window_size()
# htmlタグからクライアントのwindowサイズを抜き出す
html = driver.find_element_by_tag_name('html')
inner_width = int(html.get_attribute("clientWidth"))
inner_height = int(html.get_attribute("clientHeight"))
# 「設定したい内部の幅+外枠の幅」をwindowサイズにセット
target_width = width + (current_window_size["width"] - inner_width)
target_height = height + (current_window_size["height"] - inner_height)
driver.set_window_rect(
width=target_width,
height=target_height)
print("Window size changed: [{}, {}]".format(target_width, target_height))