こんにちは。
ある方からのご依頼で Selenium を用いた某Webサイトへの自動データ設定ツールを開発中です。
ツールの動作において不都合?が発生した際には MsgBox で利用者と対話したりしたいのですが、Webブラウザーを開いた以降は前面に表示されているので、Excel VBA から表示した MsgBox に気づいてもらえなかったりします。
(タスクバー上でピコピコとはなるのですが…^^)
そのため、Selenium から起動したWebブラウザのウィンドウのサイズや位置を操作したいなーと思い色々調べた・検証した結果を備忘録しておきます。
■ 動作環境
OS: Windows 8.1(64ビット)
Excel: 2013(32ビット)
Chrome: 88.0.4324.150(64ビット)
Selenium Basic: v2.0.9.0
■ ウィンドウの最小化
早速ですが、できません💦
冒頭お話した開発中のツールでは、もともとこの最小化をしたかったのですがー💦
■ ウィンドウの最大化(Maximizeメソッド)
Window オブジェクトの Maximize メソッドで最大化できます。
□ Maximizeメソッド
ウィンドウサイズを最大化します。
<構文>
> Windowオブジェクト.Maximize()
<戻り値>
なし
■ ウィンドウのサイズ指定(SetSizeメソッド、Sizeプロパティ)
最小化できないことに早々に気付いたため、サイズ指定(変更)で乗り切ることに💦
コード、とメッセージボックスの内容を見比べていただくとお気付きかと思いますが、ある一定以下のサイズへは変更できないようです。このメッセージボックスが表示されている時に、手動で該当Webブラウザのサイズ変更を試みてみましたが、手動でもこれ以上(516, 132)小さくできない限界値のようでしたので、良くも悪くもそういう仕様なのだと思います💦
□ SetSizeメソッド
ウィンドウサイズを指定の幅、高さに変更します。
<構文>
> Windowオブジェクト.SetSize(width, height)
<引数>
width は、ウィンドウ幅を指定(Integer)
height は、ウィンドウ高さを指定(Integer)
<戻り値>
なし
□ Sizeプロパティ
ウィンドウサイズを取得します。
<構文>
> Windowオブジェクト.Size()
<戻り値>
Sizeオブジェクト
<その他>
Sizeオブジェクトは、WidthプロパティとHeightプロパティをもっています。
と思いきや、サイズ変更以降に本来の処理を施したところエラー発生!
Name"p"の要素を参照した途端落ちましたね💦
Webブラウザ的に表示されていない要素は、参照できない仕組みなのでしょう…。
と思いきや×2、サイズを少し大きくしただけで、エラーは起きなくなりました。
参照する要素が見えていないとまったく駄目ってわけではないのですね…💦
なんだかなぁ…💦
■ まとめ
いかがでしたでしょうか?
記事のタイトルどおり話題はウィンドウサイズに終始してしまいましたが、ウィンドウ位置についても同様に制御可能です。
それにしても最小化ができないのはしんどいですね。
Win APIコールするようなコードにしたくないしなぁ…💦
なお、本備忘録を活用した【メルカリ管理ツール】を以下サイトで提供しております。
ご興味ございましたらご覧ください。
また、折を見てウィンドウ位置の制御も備忘録したいと思います。
Comments