|
uwsc+SeleniumVBA+chromeにて、DMM.comへの自動ログインを試みていますがエラーが発生して困っています。対処方法をお願い致します。
サイトのソース <input type="submit" value="ログイン" disabled="disabled"> で指定されたボタンを押そうとすると 「COM_Error:例外が発生しました。」とエラーメッセージが発生して停止します。 停止位置は以下のソースのwdel.click()の箇所です。 chromeは起動し、ログインIDとパスワードは問題なく入力されます。 ログインボタンを押す所でエラーが発生して停止して困っています。 OSはvista, chromeはver41.02272.89m, uwscはver5.1です。
url = "https://省略" wd = createoleobj("SeleniumWrapper.WebDriver") wd.start("Chrome",url) wd.setImplicitWait(10000) //自動読み込み待 wd.open(url) wd.get(url) wd.findElementByName("login_id").SendKeys("login_idテスト") //IDを入力 wd.findElementByName("password").SendKeys("passテスト") //passを入力 wdels = wd.findElementsByTagName("input") //name指定が出来ないため、tagがinput,valueがログインでボタンを特定する for wdel in wdels //inputタグでループ ifb wdel.getAttribute("value") = "ログイン" then //ボタンが見つかった、クリックだ wdel.click() //<----------「Com_Error:例外が発生しました」で止まる endif next
|
No.1008 2015/03/18(Wed) 06:42:44
|
☆ Re: uwsc+SeleniumVBA+chrome / stuncloud |
|
|
こちらではclick()でエラーというのが再現できませんでした
代替手段でJavaScriptを実行するという手があります
//wdel.click() args = safearray(0,0) args[0] = wdel driver.executeScript("arguments[0].click();", args)
うまくいくかどうかはわかりませんが
あと、何点か気になったところを 1. open()かget()はだいたい同じ動きをするので、どちらかだけを呼べばOKです また、start()で元のURLを指定しているので wd.get("/") という書き方でも大丈夫です (元のURLからの相対パス指定 2. valueが「ログイン」のinput要素を一発で指定するならCSSセレクタを使うといいでしょう wdel = wd.findElementByCssSelector("input[value=<#DBL>ログイン<#DBL>]") これでループが不要になります
|
No.1009 2015/03/18(Wed) 18:25:20
|
|
☆ Re: uwsc+SeleniumVBA+chrome / stuncloud |
|
|
click()で「Com_Error:例外が発生しました」を再現する方法がわかりました
・対象エレメントのスタイルにdisplay:none;がある場合 ・対象エレメントの親以上の要素のスタイルにdisplay:none;がある場合
要するにinput要素が非表示になっている場合ですね
例として考えられるのは 1. 対象サイトにはvalueが「ログイン」のinput要素が複数あり、一つを除いて非表示になっている 2. for in でループした際に先ず非表示の該当要素にヒットしてしまい、それをclick()したためエラーになる でしょうか
クリックしたい要素が非表示の場合以外でもエラーになる条件があるかもしれませんが、今のところはっきりしているのはこれだけです 一応、対象サイトのソースをよく確認してみてください
追記: DMMのログインページ見てみました やはり「ログイン」のinput要素が2つありますね、右上のメニューのログインボタンとフォームのログインボタンです メニュー(とその中のログインボタン)が通常では非表示になっているのでエラーになるのでしょう
findElementByCssSelector("form[method=<#DBL>post<#DBL>] input[value=<#DBL>ログイン<#DBL>]") でフォームのログインボタンが指定できました
|
No.1016 2015/03/19(Thu) 09:57:04
|
|
☆ Re: uwsc+SeleniumVBA+chrome / EK |
|
|
詳しく調べてくださって誠にありがとうございました。 無事動作確認が出来ました。
|
No.1020 2015/03/20(Fri) 06:44:13
|
|