|
やりたいこと スクロールバーが所定の位置にない場合は移動させる、すでに移動済みならば無視
下記のように記載してみましたが、記載内容が不正と表示されてしまいます。記載内容はwebで同様のことをすれば動作するというページからコピーしてきたので、 動くのでは?という気がするのですが
ACW(GETID("Yahoo! JAPAN - Kinza","Chrome_WidgetWin_1"),-4,-21,1260,768,0) ID = ("GETID") sleep (5) //スライダーの値を取得 vMIN = GETSLIDER(ID,1,SLD_MIN) ★ここの記載が違うと言われます。 vMAX = GETSLIDER(ID,1,SLD_MAX) print "vMIN =" + GETSLIDER(ID,1,SLD_MIN) print "vMAX =" + GETSLIDER(ID,1,SLD_MAX)
SETSLIDER(ID,(GETSLIDER(ID)/2)) print "vMID =" + SETSLIDER(ID,1,SLD_MAX)
|
No.5608 2018/08/05(Sun) 04:11:25
|
☆ Re: Chrome系でスライダーの移動、現在地の取得をしたい / satocha |
|
|
>記載内容が不正と表示されてしまいます UWSCに限らず、システムが出すエラーメッセージはバグつぶしに重要な情報を含んでいます。なんかエラーが出たjでは先へ進めません。
この場合、 「GETID:定義が間違っています ●行目:vMIN = GETSLIDER(ID,1,SLD_MIN)」 と出ているはずです。
エラーが出ているときは、その行に間違いがあることも多いのですが、その行で参照している変数や関数の値が変な値を持っていることも多いです。 まず、この行の記述が正しいかどうかヘルプのGETSLIDERの項目を開いて確かめます。すると、記述のミスはなさそうだ、という判断になります。
次に、この行で使っている変数や関数を調べると、関数はなく、変数として「vMIN」と「ID」の2変数を使っています。vMINの方は値を代入しているだけなので、予約語とかぶらなければ問題ありません。ちなみに予約語一覧もヘルプに出ていますので、確認してください。
次のIDはどうでしょう。こういうときは、当該行の何行か前にIDに値を代入している行があるはずです。みると3行前に ID = ("GETID") という行があります。もう一度エラーメッセージを見ると、「GETID:定義が間違っています」とあります。エラーメッセージはこのことを言っているのですね。
この変数を元に戻して書いてやると、エラー発生行「vMIN = GETSLIDER(ID,1,SLD_MIN)」は vMIN = GETSLIDER("GETID",1,SLD_MIN) ということになります。
この形を念頭にもう一度ヘルプのGETSLIDERの項と見てみると、いま"GETID"という文字列が入っているGETSLIDERの第一引数は「ID: Windowを識別するID」でなければならないのに、"GETID"という無意味な文字列が入っていることが分かります。
つまり、ID = ("GETID")の行でちゃんとしたブラウザのウインドウIDを代入してやればいいわけです。普通はこのあと、ウインドウIDを得る関数をヘルプの中から探す手間が必要ですが、このソースではうまい具合に直前の行
ACW(GETID("Yahoo! JAPAN - Kinza","Chrome_WidgetWin_1"),-4,-21,1260,768,0)
になにやら手がかりがありそうです。
実際この行だけを切り出し別スクリプトにして実行すれば、ブラウザは狙った位置に動いてくれます。
なので、IDにはACWの第一引数そのまま代入してやればいいことがわかります。 ID=GETID("Yahoo! JAPAN - Kinza","Chrome_WidgetWin_1")
で、おなじことをACWに書くのは無駄なので順番を入れ替えて、 ID=GETID("Yahoo! JAPAN - Kinza","Chrome_WidgetWin_1") ACW(ID,-4,-21,1260,768,0)
|
No.5609 2018/08/05(Sun) 08:30:30
|
|
☆ Re: Chrome系でスライダーの移動、現在地の取得をしたい / satocha |
|
|
長くなったので分けました。上の説明は、バグつぶしについてですが、バグがなくなれば思い通りに動作するかどうかは別です。必ずしもすべてのWindowsアプリケーションがUWSCの組み込み関数でうまく制御できるとは限らないからです。
特に、ブラウザはWindowsインターフェースとは別にブラウザ独自のインターフェースを持つことが多く、一筋縄でいかないことが多いようです。そこで、ブラウザの自動化はUWSCではなくブラウザ自動操縦に特化した「selenium」を利用したほうがうまくいったりします。
前置きはこれぐらいにして、手持ちのブラウザで試した結果をお知らせします。残念ながら、お使いのKinzaブラウザは持っていませんので、わかりません。 ---------------------------------------------- IE vMIN =0 vMAX =100 正常動作 ID=GETID("Yahoo! JAPAN - Internet Explorer","IEFrame") ---------------------------------------------- PaleMoon firefox系 vMIN =-99999 vMAX =-99999 (UWSCのエラー値)スライダーが取得できていない模様 ID=GETID("Yahoo! JAPAN - Pale Moon","MozillaWindowClass") ---------------------------------------------- GoogleChrome vMIN =0 vMAX =0 スライダー動かず ID=GETID("Yahoo! JAPAN - Google Chrome","Chrome_WidgetWin_1")
|
No.5610 2018/08/05(Sun) 08:51:57
|
|
☆ Re: Chrome系でスライダーの移動、現在地の取得をしたい / pon |
|
|
satochaさん
詳しいご説明、複数環境での検証ありがとうございます。 早速私の環境でも試してみたところ vMIN =0 vMAX =0 vMID =True と表示され、スクロール情報を取得することはできませんでした。 そこで、マウス操作を記録してスライドバーを直に操作し、 これを.uws化することで、目的の動作を達成できました。 uwscなら大概の自動実行はできるのかと思っていましたが意外とできないこともあるのですね、、、
|
No.5614 2018/08/07(Tue) 00:11:00
|
|