質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.34%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

2回答

349閲覧

Chrome Browser のバージョンを取得したい

gos

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2024/11/23 06:43

編集2024/11/24 00:50

実現したいこと

Chrome Browser のバージョンを取得したい。
https://chromiumdash.appspot.com/releases?platform=Windows
11月24日で「131.0.6778.86」を取得したい。

チェックするのは Stable のバージョンです

発生している問題・分からないこと

 今月初めはバージョン情報を取得できていたが、出来なくなりました。
driver.FindElementsBy*** など、20パターンほど試しましたがダメでした。
どのようにしたらバージョン情報を取得できますか?

該当のソースコード

Option Explicit Sub get_brows_ver() Dim body1 As String, ver1 As String, url1 As String Dim driver As New Selenium.WebDriver url1 = "https://chromiumdash.appspot.com/releases?platform=Windows" With driver .Start "chrome" .Get url1 .Wait 2000 'loading 待ち body1 = .PageSource ver1 = .FindElementByXPath("//*[@id=""header""]/div[2]") End With Debug.Print body1 Debug.Print ver1 End Sub

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

driver.PageSource で確認しても何が何やらさっぱり。
解決方法を教えてください。
もしくは何を勉強すれば良いですか。

補足

同じ環境、バージョンで実行できていたのでレスポンスに変更があるように思っています。
取得ログを残していないので検証できずにいます。

Windows 10 Home バージョン 22H2
OS ビルド 19045.5198
エクスペリエンス Windows Feature Experience Pack 1000.19060.1000.0

Microsoft® Excel® 2019 MSO (バージョン 2410 ビルド 16.0.18129.20158) 32 ビット
Google Chrome: 131.0.6778.86(Official Build) (64 ビット)
ChromeDriver 131.0.6778.85

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2024/11/23 11:11

環境をちゃんと書いた方が良いでしょうね。 タグにExcelとVBAと書いてあるのでPCの話かと思ったけど、リンク先はAndroidのChromeのようです。 AndroidOS上で動かすExcelのVBAから、Android用のSlenium経由で起動したChromeのバージョンを知りたいということなら、非常にレアケースだと思うので、状況を詳しく書いた方が良いと思います。
otn

2024/11/23 11:13

と思ったけど、もしかして、PCのExcelVBAから、お書きのURLのページにアクセスして、そのページの解析をしてそのページに書いてあるバージョン情報を取得したいと言うことなら、単にプログラムが間違っていると言うことかと思いますので、プログラムを載せないと始まりません。
meg_

2024/11/23 12:57

> 今月初めはバージョン情報を取得できていたが、出来なくなりました。 ・そのソースコードを質問に追記してください。 ・「出来なくなりました」の具体的内容を質問に追記してください。
juner

2024/11/25 02:02 編集

素の js で取得するのであれば下記の様な感じになりますね。現状。 ```js [...document.querySelectorAll('chromium-releases')] .flatMap(({shadowRoot}) => [...shadowRoot.querySelectorAll('release-list')]) .map(({shadowRoot}) => { return shadowRoot.querySelector('#header > :nth-child(2 of div)').innerText }) ``` ```output ['130.0.6723.137', '131.0.6778.86', '132.0.6834.15', '133.0.6847.2', '133.0.6857.0', '133.0.6857.1'] ```
guest

回答2

0

ベストアンサー

shadow rootの中にあるようなので、面倒くさいですね。shadow rootの中にあるタグは、driver.FindElement~~では見つかりません。

解決方法を教えてください。

Seleniumにshadow rootの中にフォーカスするメソッドがあるはずです。
RubyやPythonだとshadow_root。VBAでも類似の名称でしょう。

もしくは何を勉強すれば良いですか。

HTML と shadow root

shadow rootの中を見るプログラムを自力で書くのが難しいようなら、
別案として、早めにテキストデータを抽出して、そこから文字列処理で必要なデータを抜き出すことも考えるべきかと思います。Seleniumを使うプログラムをVBAで書いたことは無いですが、bodyタグ内のテキストの抽出は、

VBA

1driver.FindElementsByTag("body")(1).Text

とかですかね。別案を採用する場合に学ぶべき物は正規表現でしょうね。

投稿2024/11/24 11:51

otn

総合スコア85989

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

 みなさん、回答ありがとうございます。
現在は Node.js で Google Chrome for Testing の利用環境を整えているところです。
恥ずかしながら、chrome driver と Google Chrome for Testing をセットで使うことを知りませんでした。
ブラウザと driver のバージョンチェックを行っていたことが恥ずかしいです。

今までは chrome driver のバージョン近似のブラウザをインストールして利用していました。
それも自動バージョンアップを手動で解除するという、煩雑な手順。

今後は chrome driver のバージョンアップをチェックするだけで良いことになりました。
それは現在、できているので悩み解決とします。
ですが、shadow root は勉強していきたいと思います。

juner さんの output を入手できれば何とかなります。

otn さんの shadow root を探すと shadow DOM なんてのが出てきたので
以前、使ったことのある オブジェクトと共通点はあるのかなとググってます。
CreateObject("MSXML2.XMLHTTP")

投稿2024/11/26 10:54

gos

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2024/11/26 14:07

「テキストにしちゃうと構造が見えなくなるので、ノードで絞り込む必要がある」ならShadowDOMを勉強するしかないですが、今回はそうではなさそうなので、 driver.FindElementsByTag("body")(1).Text から正規表現で必要情報を取り出すのが、今回については楽そうです。 正規表現をよく知らない場合はどこでも役立つ技術なので、この機会に勉強する。 > shadow root は勉強していきたいと思います。 「今すぐにShadowDOMを勉強することが自分のプラスになる」と何らかの理由で思うならばそれで良いと思いますが、もうちょと先延ばしにして経験を積んだ上で勉強した方が、学びも早くて理解も深まると思います。 勉強するなら「なぜShadowDOMのような仕組みが考え出されたのか」の理解からですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.34%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問