dポイントプレゼントキャンペーン実施中!

独学なので、表現がおかしなところは適宜補完して読んでいただけると助かります。
IEでタイトルを取得する場合、
TypeName(window.document)が"HTMLDocument"であるかチェックし、
window.document.Title
で取得できてましたが、これをブラウザ「FireFox」を対象として同じことをしたい場合、
どのようにしたらよいでしょうか。

検索してもFireFoxで指定URLを開くといったものしか見つけられません。
具体的な方法を回答で投稿していただくのでも、
参考となる記事のあるURLでも構いませんので、
教えてください。

A 回答 (3件)

-第2報-



結論的なものではないのですが、Excel用の情報としては、GitUb のFlorentbr という所に集約されるというそうです。
https://florentbr.github.io/SeleniumBasic/

この中に、プロジェクトとして、
A simple and quick way to drive Firefox, IE, Chrome, Opera and PhantomJS (headless webkit). と、銘を打っているので、まず、期待するしかないようです。ただし、Excel にPython が加わってくると事情が大幅に変わってしまいます。

SeleniumBasic v2.0.9.0
最終リリースは、florentbr florentbr released this on 3 Mar 2016

開発予定ではあるけれども、未だ、達成はしてないようです。
----
ADO ON としては、Selenium IDE (初期の頃のSeleniumですが、最終更新日は、2018/10/15になっています。)SeleniumIDE → Selenium-VBA →SeleniumBasic と変遷してきています。

https://github.com/SeleniumHQ/selenium-ide

説明
Selenium IDE is an integrated development environment for Selenium tests. It is implemented as a Firefox extension, and allows you to record, edit, and debug tests.

ただし、これは、言語としては、Javascript/Python 辺りだ思われます。
FireFox は、いままでのブラウザと大幅に様変わりましたし、私自身は、FireFox は、テレビからYouTubeにアクセスしています。

ちなみに、Google Chrome のほうが、処理しやすいと思います。

'//
Sub ChromeControl1()
Dim driver As New ChromeDriver '要更新 Latest:2.43 support Chrome v69-71
'https://sites.google.com/a/chromium.org/chromedr …
Dim obj As Object
driver.Get "https://www.goo.ne.jp/"
Set obj = driver
With obj
 AppActivate "Microsoft Excel"
 MsgBox .Title & " : " & .url
End With
End Sub
'//
    • good
    • 1
この回答へのお礼

いろいろ調べて頂き、ありがとうございました。
質問投稿の際に、FireFoxで、と書いてましたが
元はIE以外のブラウザでというところでもありましたので、
Chromeno方でも試してみます。

質問投稿して、最初に回答頂いてからでも4日ですね。
時間を割いて調べ検証して頂き、感謝します。

ベストアンサー10個分くらいお贈りした気持ちです。

お礼日時:2018/10/28 12:48

>ExcelからIEを操作してたものをFireFoxでも動作するようにしたかったのですが、


>一筋縄ではいかない以上に複雑っぽいですね。

FireFox Driver のLatest Version として、geckodriver.exe が使えるようですが、まだ、VBAには組んでいません。(果たして組めるものかもわかっていません)

https://github.com/mozilla/geckodriver/releases

以下は、FireFox は、そんなに簡単にはいきませんね。Browser の中でも、一番汎用性が高いので、ひとつをかえるというわけにはいきません。
https://qiita.com/jnchito/items/ab23c925a6a78345 …

なお、No.1のWin32APIは、取れることは取れるのですが、画面が変わっても更新しないので、今の所はボツです。
    • good
    • 1

こんにちは。



>検索してもFireFoxで指定URLを開くといったものしか見つけられません。
方法にもよるのですが、FireFox をコントロールできれば、Webサイトのタイトルなどは取れるのですが、それができません。

結局、白旗を挙げることになりそうなのですが、本日、半日掛けて頑張ってみたものの、FireFoxは、バージョンアップが目まぐるしいので、ぜんぜん、他のツールが追いつかないというのが実情なのです。おっしゃっているのは、Windowからみると、それはTitle ではなく、Caption なのですが、一般のアプリなら、私の書いたコードで十分に取れます。なお、1のSeleniumの話は、GitHub が中心になっています。FireFox は、昔と様子も変わりましたので、単なるブラウザとは言えないツールになりつつあるようです。

能書きはともかく、試した方法を書けば、誰か他にアトバイスが得られるかもしれません。

1. いわずと知れた、SeleniumBasic で、イントールはしました。
ひところは、Selenium と他のブラウザとはバランスがあっていたのですが、Firefox は、今、62.0.3です。Driver は、40台の頃に動いていたもので、FireFox は、Timeout を起こしてしまいます。

//
''SeleniumBasic は、最新のものに変えましたが、Driver は、変わってはいません。
''Driver は、探して入れ直さないといけないのですが……。
Dim obj As Object

Set driver = CreateObject("Selenium.FirefoxDriver")
driver.Get "https://www.goo.ne.jp/", 60 ''←60はタイムラプス
//

TimeOut で失敗!(最初から諦めムードが漂っていました)

2.ならば、Win32Api はどうか、(もはや、全てを諦めてはいるが)

Const clsNAME As String = "MozillaWindowClass"
Dim hWnd As Long
Dim cap As String
hWnd = FindWindow(clsNAME, vbNullString) '←ここは取れています。
 cap = String(100, Chr(0))
 GetWindowText hWnd, cap, Len(cap)
 msg = Left(cap, InStr(1, cap, Chr(0)) - 1)

しかし、cap の中は、空でした。 cap は、Caption の略

3.では、WMI ではどうか、

Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
Set oClassSet = oService.ExecQuery("Select * From Win32_Process")

For Each oClass In oClassSet

Next

今の所は、失敗しているけれども、可能性はあります。でも、もはや、VBAのメリットも何もないです。

以上が、私からの第一報です。
    • good
    • 1
この回答へのお礼

回答頂くまでSeleniumBasicという言葉にすら辿り着いてませんでした。
時間を割いていろいろ検証して頂きありがとうございました。
ExcelからIEを操作してたものをFireFoxでも動作するようにしたかったのですが、
一筋縄ではいかない以上に複雑っぽいですね。
自分でももう少し頭を捻ってみます。・・・というかほぼ検索頼りなんですが。

お礼日時:2018/10/22 16:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!