##発生している問題・エラーメッセージ
access2013からSeleniumを使用してchromeを操作しようと以下のソースコードを実行すると
たまにStartメソッドを実行するとそのままAccessが固まってしまって何も操作できなくなります。
Sample2ではStartメソッドをコメントアウトして実行してみてもGetメソッド時に同様にためなときは固まってしまいます。
msgboxで表示中のようにクリックしても無反応です。
一旦固まると一晩(8時間以上)たってもそのままでした。
結局タスクマネージャーから強制終了してから再度起動しないといけません。
なにかChrome起動やアタッチなどのタイムアウト等の設定があるのでしょうか
###試したこと
sample1を実行してうまくいくときはChroemが起動されてヤフーのページが表示されます。
だめなときにはchromeも起動せずかたまります。
sample2を実行してうまくいくときは起動済みのChroemにヤフーのページが表示されます。
だめなときにはchromeには変化ありません。
更にsample2の以下を変更してみたが
Set driver = CreateObject("Selenium.ChromeDriver")
driver.SetCapability "debuggerAddress", "127.0.0.1:9222"
Driver.Start
Driver.Get "https://www.yahoo.co.jp/"
↓
Set driver = CreateObject("Selenium.WebDriver")
driver.SetCapability "debuggerAddress", "127.0.0.1:9222"
Driver.Start "chrome",[Webドライバーフルパス]
Driver.Get "https://www.yahoo.co.jp/"
結果同じくたまに固まってしまいます。
またchrome起動後にポート使用可能になるまで待つように
WaitPortUse(9222)
の処理を入れましたが若干頻度は落ちましたが、やはりたまに固まります。
固まる場合はchromeが
ちなみに参照設定しないのはSeleniumを入れていないPCもあるので動作的に使用しています。
#該当のソースコード
Sub sample1()
Dim Driver As Object
Set driver = CreateObject("Selenium.ChromeDriver")
Driver.Start "chrome"
Driver.Get "https://www.yahoo.co.jp/"
stop
End Sub
Sub sample2()
Dim Driver As Object
Dim hwnd As Integer
Dim i As Integer
Shell chromeのフルパス & " -remote-debugging-port=9222 --user-data-dir=C:\Temp_ForChrome"
'Chrome表示待ち
hwnd = FindWindow("Chrome_WidgetWin_1", "新しいタブ - Google Chrome")
Do While hwnd = 0
For i = 1 To 5
Sleep 1000
DoEvents
Next
hwnd = FindWindow("Chrome_WidgetWin_1", "新しいタブ - Google Chrome")
Loop
Do While IsWindowVisible(hwnd) = 0
For i = 1 To 5
Sleep 1000
DoEvents
Next
Loop
Set driver = CreateObject("Selenium.ChromeDriver")
driver.SetCapability "debuggerAddress", "127.0.0.1:9222"
Driver.Start
Driver.Get "https://www.yahoo.co.jp/"
End Sub
'指定ポートが反応あるまで待つ
Public Function WaitPortUse(longPort As Long) As Integer
Dim strFile As String
Dim strWork As String
Dim obj2 As Object
Dim obj3 As Object
Dim i As Integer
On Error Resume Next
'Chromeに通信できるか確認
strFile = "c:\log\NetConnection.log"
Set obj2 = CreateObject("WScript.Shell")
obj2.Run "powershell -NoLogo -ExecutionPolicy RemoteSigned -Command Test-NetConnection 127.0.0.1 -port " & longPort & " > " & strFile, 0, True
Do While 1
'UTF-8テキストファイルを開く
Set obj3 = CreateObject("ADODB.Stream")
obj3.Type = adTypeText
'file1.Charset = "shift-jis"
obj3.Charset = "utf-8"
obj3.LineSeparator = adCRLF ' 改行コードの指定 -1: CRLF, 10: LF, 13: CR
obj3.Open
Call obj3.LoadFromFile(strFile)
strWork = obj3.ReadText(adReadLine) Do While InStr(1, strWork, " ", vbTextCompare) <> 0 strWork = Replace(strWork, " ", "", , , vbTextCompare) Loop Do While InStr(1, strWork, Chr(0), vbTextCompare) <> 0 strWork = Replace(strWork, Chr(0), "", , , vbTextCompare) Loop Set obj3 = Nothing If InStr(1, strWork, "TcpTestSucceeded:True", vbTextCompare) <> 0 Then Exit Do End If For i = 1 To 20 Sleep 1000 DoEvents Next obj2.Run "powershell -NoLogo -ExecutionPolicy RemoteSigned -Command Test-NetConnection 127.0.0.1 -port " & longPort & " > " & strFile, 0, True Loop Set obj2 = Nothing
End Function
chromeとWebDriverのバージョンは同じでした
複数のPCで同じ現象が発生したことがあります。OSのWindowsは8.1や10(x64,x86も混在)などまちまちです。
Accessも2013,2016(32ビット)とそのPCによって違いますが同じ現象が発生しました
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。