VBAによる処理中のWaitについて

1,628 views
Skip to first unread message

Toshi

unread,
Aug 9, 2019, 4:49:43 AM8/9/19
to 日本Seleniumユーザーコミュニティ
処理をさせている時に、添付したように処理中と表示され、歯車が回っています。
ただ、Webの不具合だと思うのですが、ハングした状態に時々なり、困っています。

"戻る"をして、再トライすると問題ないのですが、ハングしたのかを判断するのに、ある程度の時間が経過してもElementが見つからない場合には、"戻る(driver.goback)"をしたいです。

ところが、Value = driver.IsElementPresent(by.Class("x-mask-loading"), 1000)と記述しても、タイムアウトでランタイムエラーになってしまいます。htmlソースがマスクされている感じで、見つけることができません。その画面で検証(Ctrl+Shift+I)をすると、新たなソースコードが出てきて、Elementを見つけることができます。

そこで下記のどちらかの方法で解決したいと思います。
1) 処理中であることを調べる別の方法はありませんか?
2) sendkeysでCtrl+Shift+Iを送れますか?ウィンドウが出たら、driver.closeで閉じます。

アドバイスをよろしくお願いします。
busy.JPG

タカミテツロウ

unread,
Aug 9, 2019, 6:46:33 AM8/9/19
to Toshi, 日本Seleniumユーザーコミュニティ
参考になるかどうか

1) 
f driver.FindElementsByClass("x-mask-loading").Count > 0 Then
     Debug.Print ("有")
Else
     Debug.Print ("無")
End If


"x-mask-loading" が 複数ある場合は 一意に指定できる方法が良いかも

FindElementByClass ではなく FindElementsByClass (複数形)で

2)
element.sendkeys~ では 上手くいかないかも
ブラウザを 最前面にして  (VBAのステートメントである)
SendKeys "+^{I}"

 

2019年8月9日(金) 17:49 Toshi <m.oha...@gmail.com>:
--
このメールは Google グループのグループ「日本Seleniumユーザーコミュニティ」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには seleniumjp+...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/seleniumjp/0f98e3e9-80f8-4dd9-8625-6296bece980d%40googlegroups.com にアクセスしてください。

タカミテツロウ

unread,
Aug 9, 2019, 6:51:27 AM8/9/19
to Toshi, 日本Seleniumユーザーコミュニティ
訂正
✖  f driver.FindElementsByClass("x-mask-loading").Count > 0 Then  

〇 if driver.FindElementsByClass("x-mask-loading").Count > 0 Then

2019年8月9日(金) 19:46 タカミテツロウ <t.taka...@gmail.com>:

Toshi

unread,
Aug 12, 2019, 9:56:31 PM8/12/19
to 日本Seleniumユーザーコミュニティ
アドバイス、ありがとうございます。
1)は動作しませんでした。
2)については、動作しました。
              myShell.AppActivate "Google Chrome"
              SendKeys "+^{I}", True  'Open
              driver.SwitchToNextWindow
              SendKeys "{F12}", True  'Close
              driver.SwitchToPreviousWindow

これでクローズとします。

2019年8月9日金曜日 19時51分27秒 UTC+9 タカミテツロウ:
訂正
✖  f driver.FindElementsByClass("x-mask-loading").Count > 0 Then  

〇 if driver.FindElementsByClass("x-mask-loading").Count > 0 Then

2019年8月9日(金) 19:46 タカミテツロウ <t.tak...@gmail.com>:
参考になるかどうか

1) 
f driver.FindElementsByClass("x-mask-loading").Count > 0 Then
     Debug.Print ("有")
Else
     Debug.Print ("無")
End If


"x-mask-loading" が 複数ある場合は 一意に指定できる方法が良いかも

FindElementByClass ではなく FindElementsByClass (複数形)で

2)
element.sendkeys~ では 上手くいかないかも
ブラウザを 最前面にして  (VBAのステートメントである)
SendKeys "+^{I}"

 

2019年8月9日(金) 17:49 Toshi <m.oh...@gmail.com>:
処理をさせている時に、添付したように処理中と表示され、歯車が回っています。
ただ、Webの不具合だと思うのですが、ハングした状態に時々なり、困っています。

"戻る"をして、再トライすると問題ないのですが、ハングしたのかを判断するのに、ある程度の時間が経過してもElementが見つからない場合には、"戻る(driver.goback)"をしたいです。

ところが、Value = driver.IsElementPresent(by.Class("x-mask-loading"), 1000)と記述しても、タイムアウトでランタイムエラーになってしまいます。htmlソースがマスクされている感じで、見つけることができません。その画面で検証(Ctrl+Shift+I)をすると、新たなソースコードが出てきて、Elementを見つけることができます。

そこで下記のどちらかの方法で解決したいと思います。
1) 処理中であることを調べる別の方法はありませんか?
2) sendkeysでCtrl+Shift+Iを送れますか?ウィンドウが出たら、driver.closeで閉じます。

アドバイスをよろしくお願いします。

--
このメールは Google グループのグループ「日本Seleniumユーザーコミュニティ」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには selen...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/seleniumjp/0f98e3e9-80f8-4dd9-8625-6296bece980d%40googlegroups.com にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages