[ 掲示板に戻る ]

過去ログ閲覧モード

uwsc+SeleniumVBA+chrome / EK
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
COM,Errorにつきまして / waheidesu
まったくの初心者です。24時間記録をエクセルに記録しています。
使用PCは、win 7 64ビットです。
下記のような記入をしています。UWSプロ版

EXCEL = GETACTIVEOLEOBJ("EXCEL.Application")
SLEEP(0.5)
Excel.Run("テン分後")

他のエクセル作業をする時(必ず)
PCには触れていなくて放置しているとき(他のソフト等は起動していません)
ランダムに次のエラー表示が出ます。
回避方法があればよろしくお願いします。

Com_Error:例外が発生しました。
3行目:EXCEL.Run("1分毎")
と表示されて、UWSがストップします・

No.1006 2015/03/17(Tue) 07:01:36

Re: COM,Errorにつきまして / Nagatani
感ですが、Excelが起動して使用するbookが開いてる事が前提ですが
マクロが有効になっていないか?又は、マクロが存在しない?のが
原因ではないでしょうか?

No.1010 2015/03/18(Wed) 19:09:43

Re: COM,Errorにつきまして / waheidesu
ありがとうございます。
以下のことですが
>>マクロが有効になっていないか?
>>又は、マクロが存在しない?
確認しましたがどちらもOKです。
よろしくお願いします・

No.1011 2015/03/18(Wed) 21:45:01

Re: COM,Errorにつきまして / しゅん
同時に実行してはいけないマクロを実行していたりしませんか?
または、マクロが二重起動されていたりとか。

いずれにしても、これ以上の回答が欲しいようでしたら、Excelのマクロも含めて、再現する方法を提示してもらわないと、エスパーでない限り回答できません。

#個人的には、マクロが悪い、に一票

No.1012 2015/03/18(Wed) 21:51:44

Re: COM,Errorにつきまして / waheidesu
お世話になります。
今一度マクロ関係で調べて見ます。
ありがとうございました。
今後ともよろしくお願いします。

No.1013 2015/03/18(Wed) 22:24:43

Re: COM,Errorにつきまして / waheidesu
お世話になります。
ご回答いただいた方、ありがとうございました。
やはりマクロの二重実行をしておりました。
解決いたしました。

No.1014 2015/03/19(Thu) 07:22:17

Re: COM,Errorにつきまして / しゅん
解決したようで良かったですが、期待したexcelが取れてない、という可能性もありましたね。
No.1015 2015/03/19(Thu) 08:11:56
★ COM,Errorにつきまして / waheidesu
すみません、先ほどの記入におきまして

>Com_Error:例外が発生しました。
>3行目:EXCEL.Run("1分毎")
>と表示されて、UWSがストップします・
("1分毎")と記入ですが、これは("テン分後") に訂正します。

よろしくお願いします。

No.1007 2015/03/17(Tue) 07:05:48
gmailを使った自動メール配信 / ミュウ

下記のようなコードで、自動でメールを出したいと考えています。
しかし、
?@件名が入らない
?A「送信」ボタンの押し方がわからない。
でつまずいております。
ヒントだけでも構いませんので、ご教授いただけますと幸いです。

IE.Navigate("https://mail.google.com/mail/u/0/#inbox?compose=new") //作成
BusyWait(ie)
IESetData(IE,"godgod6@gmail.com","to") // 送信先
IESetData(IE,"テスト","subject")//件名

No.1001 2015/03/15(Sun) 16:53:30

Re: gmailを使った自動メール配信 / stuncloud
> ?@件名が入らない
name属性が「subject」ではなく「subjectbox」ですね

> ?A「送信」ボタンの押し方がわからない。
Ctrl+Enterでも送信出来るようなのでsckeyを試してみる、とか

No.1003 2015/03/16(Mon) 10:08:02

Re: gmailを使った自動メール配信 / ミュウ
>stuncloud様
大変助かりました! subjectboxで問題解決しましたし、sckeyで解決しました!
大変ありがとうございます(^^)/

No.1005 2015/03/16(Mon) 22:04:19
メモ帳のファイル一覧から最新のファイルを選択する方法 / hutec
ファイル(F),開く(O),更新日時を2回クリックし、
最新日付のファイルを第1行目に表示し、
1行目のファイルをクリック(開きたい)したいのですが、
ファイル名の一覧から1行目の選択の仕方が判りません。
出来れば、座標では無く高度でやりたいです。
サンプル等教えて頂ければ助かります。
私の環境はWindows7Home64bitです。
よろしくお願いします。

No.1002 2015/03/16(Mon) 09:30:46

Re: メモ帳のファイル一覧から最新のファイルを選択する方法 / stuncloud
folder = "c:\hoge" // 開きたいファイルのあるフォルダを指定

fso = createoleobj("Scripting.FileSystemObject")
dir = fso.getFolder(folder)
newest = ""
dlm = ""
for file in dir.Files
 if file.DateLastModified > dlm then
  dlm = file.DateLastModified
  newest = file.Path
 endif
next

exec("notepad " + newest)

No.1004 2015/03/16(Mon) 10:20:46
callの機能について / たっきー
UWSCには非常にお世話になっています。
2種類のプログラム prog1.uwsとprog2.uwsを作成し、それぞれ独立して動くように
しています。2種類のプログラムには、同じ関数が登録してあります。

prog1からprog2を動作させたいことがあり、call文で実行させた場合、同じ名前の
関数がありますとエラーになります。

上記のような場合、どのように設計すればよいのでしょうか?
・単独で動作するプログラムとしたい。
・片方のプログラムから、もう一方のプログラムを実行できる。
・共通関数を使用したい。

以上 よろしくお願いします。

No.999 2015/03/14(Sat) 16:49:34

Re: callの機能について / Nagatani
私は、下記のようにスクリプトを4つ作成し活用しています。参考になるでしょうか?


//メインプログラム
Public StrSample2="Sample2"  //変数を引き渡す時に宣言します。
 Call サブルーチン.UWS    //両方に共通する関数(BusyWait)などを入れているスクリプト
  call "Sample1.uws"
  call "Sample2.uws"

//Sample1.uws
 StrSample1="Sample1"
 print StrSample1

//Sample2.uws
 print StrSample2

//サブルーチン.uws
Procedure BusyWait(ie)
 Sleep(0.5) // Wait
 Const TIME_OUT = 90
 tm = Gettime()
 repeat
 Sleep(0.2)
  ifb Gettime() - tm > TIME_OUT
   MsgBox("Time Out:BusyWait")
   ExitExit
  endif
 until (! ie.busy) and (ie.readyState=4)
 Sleep(0.5)
Fend

No.1000 2015/03/14(Sat) 20:19:00
関連付けされてない動画ファイルのmedia playerでの再生 / マーブル
windows7です。

media playerに関連付けされていないwmvファイルをmedia playerで再生したいです。

普段は別の動画プレイヤーで再生しているのですが、関連付けされていないmedia playerで再生することはできませんか?

media playerの起動はできました。
doscmd("C:\Program Files (x86)\Windows Media Player\wmplayer.exe")

でも動画ファイルを選択することができません。

コマンドラインからwmvファイルを実行すると当然なのですが関連付けされた動画プレイヤーで再生が始まります。
doscmd("C:\目的のファイル.wmv")

希望の動作ではありません。

分かる方いらっしゃいましたら、よろしくお願いします。

No.983 2015/03/08(Sun) 02:25:52

Re: 関連付けされてない動画ファイルのmedia playerでの再生 / Liners
// execでアプリ名 + オプション + ファイル名
exec("C:\Program Files (x86)\Windows Media Player\wmplayer.exe /play C:\Windows\Performance\WinSAT\winsat.wmv")

No.984 2015/03/08(Sun) 02:48:58

Re: 関連付けされてない動画ファイルのmedia playerでの再生 / マーブル
Linerさま、ご返信ありがとうございます。
希望通りの動作が確認できました。

もしよろしければ少しだけ詳しくお伺いしたいのですが。

教えていただいたスクリプト内のオプションはコマンドラインのオプションではないですか?

参考にしたページ
http://support.microsoft.com/kb/241422/ja

スクリプトの「exec」の部分を「doscmd」に変えても動くかと思ったのですがダメでした。

doscmd("C:\Program Files (x86)\Windows Media Player\wmplayer.exe /play C:\Windows\Performance\WinSAT\winsat.wmv")

なぜ「doscmd」はダメで「exec」はOKなのでしょうか?

お忙しいところ恐縮ですがよろしければ教えていただきたいです。

No.986 2015/03/08(Sun) 12:25:55

Re: 関連付けされてない動画ファイルのmedia playerでの再生 / routa
DOSはスペースを誤認識するからでしょう。
スペースがある時は "" で閉じる必要があります。
doscmd("<#DBL>C:\Program Files (x86)\Windows Media Player\wmplayer.exe<#DBL> /play C:\Windows\Performance\WinSAT\winsat.wmv", true)

No.988 2015/03/09(Mon) 23:14:35

Re: 関連付けされてない動画ファイルのmedia playerでの再生 / マーブル
なるほど、そういうことなのですね。
スペースを含むファイル名の扱いには気をつけたいと思います。

routaさま、Linersさま、ご親切にありがとうございました!

No.996 2015/03/13(Fri) 14:18:47
wmvファイルの再生時間の取得 / マーブル
こんにちは。

wmvファイルのプロパティの詳細タグになる長さ(再生時間)を取得することはできませんか?

過去ログからこんなのを見つけましたがうまく応用できません。


----------------------------------------------------------
RE:ファイルのタイムスタンプを取得したく しろまさ

これまたComで。

Dim Path_File = Get_Uwsc_Dir + "\uwsc.exe" // 取得対象ファイルパス

Dim Obj_FSO = CreateOLEobj("Scripting.FileSystemObject")
Dim Obj_File = Obj_FSO.GetFile(Path_File)

Dim DC = Obj_File.DateCreated // 作成日時
Dim DLM = Obj_File.DateLastModified // 更新日時
Dim DLA = Obj_File.DateLastAccessed // アクセス日時

MsgBox(DC+"<#CR>"+DLM+"<#CR>"+DLA)
----------------------------------------------------------

よろしくお願いします。

No.982 2015/03/07(Sat) 11:41:37

Re: wmvファイルの再生時間の取得 / Liners
// 色々ありますが、Shell.Applicationを使った方法です。
// 拡張プロパティなので、汎用のItem番号で 0:ファイル名,27:長さ

FileFol = "C:\Windows\Performance\WinSAT"
FileName = "winsat.wmv"
Shell = CreateOleObj("Shell.Application")
Property = Shell.NameSpace(FileFol)
Items = Property.Items

for i =0 to Items.Count -1
  Item = Items.Item(i)
  if Property.GetDetailsOf(Item, 0) = FileName Then msgbox(Property.GetDetailsOf(Item, 27))
next

No.985 2015/03/08(Sun) 02:55:00

Re: wmvファイルの再生時間の取得 / マーブル
Linersさま、ありがとうございました。

希望どおり再生時間を取得できました。
助かりました!

No.995 2015/03/13(Fri) 14:16:49
UWSCの変数をbatファイルに渡す / マーブル
UWSCの変数をbatファイルに渡すことはできませんか?

----------------------------------------------
変数 = 渡したい変数
DOSCMD("C:\test.bat") ← この中で変数を使いたい
----------------------------------------------

よろしくお願いします。

No.989 2015/03/10(Tue) 16:57:26

Re: UWSCの変数をbatファイルに渡す / miles
//バッチファイル内で、「変数」は「%1」として保存されます。
DOSCMD("C:\test.bat " + 変数)

No.990 2015/03/11(Wed) 08:42:05

Re: UWSCの変数をbatファイルに渡す / マーブル
milesさま、ありがとうございました。
きちんと変数を渡せました!

おかげで助かりました。

No.994 2015/03/13(Fri) 14:15:12
execの引数について / マーブル
exec関数でnotepadを開くとき引数で開けるファイルを指定できますよね。

exec("notepad 開きたいテキスト.txt")

でも引数の指定ってuwscのヘルプには載ってなくないですか。

ここで使われる引数ってuwsc独自の機能ではなく一般的?なものなのでしょうか?

文章がおかしいかもしれません。ごめんなさい。
ヘルプに書いてあることが全てではないの?気になったので質問しました。

No.991 2015/03/12(Thu) 22:59:51

Re: execの引数について / しろまさ
一般的ですねー。ショートカットやCmdなども同じです。
空白で区切ると引数とみなされます。

Windowsの機能っぽいですが、Execは .exeまでのパスは空白を含んでも大丈夫です。
引数は複数可能、1つの引数に空白を含みたい場合は "" で囲います。

余談ですが notepad という指定は、「パスを通す」と「登録されている拡張子」が絡んでいます。
通常は〜.exeまでのフルパスを指定しないと動きません。

No.992 2015/03/13(Fri) 08:29:35

Re: execの引数について / マーブル
しろまささま、ありがとうございました。
よくわかりました!

もっと勉強してみます。

No.993 2015/03/13(Fri) 14:10:59
全1170件 [ ページ : << 1 ... 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ... 117 >> ]