112636
UWSC 仮 掲示板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオン
動作不具合での質問の場合には環境を表記(OS,バージョン等)
タイトルは内容を表し、内容はネットゲーム関係禁止
自身でコードを書く気の無いナマケモノは特に質問禁止
失敗作でもコードを投稿すること(具体性の無い質問は無視される可能性大)

UWSC掲示板 が復活することを祈り、それまでの繋ぎとして。
環境設定[s7777777]

IEからEDGEではまっています。 / ながいも
IEからEdgeへの置き換えでお教えください。
これまで通常に動いていた治具パソコンが急遽下記のエラーが発生するようになりました。
until ( ! ie.busy ) and ( ie.readystate = 4
恐らくはIEからEDGEに標準ブラウザを置き換えられたためかと思います。

そこで応急処置を施したいのですが
コンパネで標準ブラウザをIEに設定しなおしてもクロスケーブルで接続している基板を見に行こうとした際にEDGEに接続され上記COMエラーが発生してしまいます。

IE="(C:*****:edge)"と定義しても多分ダメですよね?
短時間で切り替えられる方法があればお教えください。
何卒よろしくお願いいたします

No.1365 2021/09/21(Tue) 12:40:00

Re: IEからEDGEではまっています。 / stuncloud
> IE="(C:*****:edge)"と定義しても多分ダメですよね?
ダメです

> 短時間で切り替えられる方法があればお教えください。
今までの資産を活かしつつ、比較的短時間で移行 **できるかもしれない** 方法は一応あります

ステップ1: 捜査対象サイトをEdgeのIEモードで開きます

EdgeのIEモードで開いているサイトであれば外部からCOMオブジェクトとして掴むことができます
IEモードによるサイトの開き方は別途お調べください
# ローカル環境であれば設定からurlを指定できます
# Active Directory配下のPCであればグループポリシーによる操作が必要になる?みたいです

ステップ2: IEモードで開かれたページをCOMオブジェクトとして取得する

https://junjun777.hatenablog.com/entry/20120212/uwsc_hwnd_ie_object

こちらを参照ください
以下のような使い方になります

call ie_getObject.uws

dim wid = GETID("- Microsoft​ Edge", "Chrome_WidgetWin_1")
dim ie = IeObject.Get(wid)
if ie = 0 then
 msgbox("IEモードの取得失敗")
endif

msgbox(ie.document.url) // urlを表示

# このieオブジェクトはInternetExplorer.Applicationのそれとは若干異なります


大幅な改修が必要になりますがUwscWebDriverを使うという方法もあります
https://github.com/stuncloud/UwscWebDriver

No.1366 2021/09/21(Tue) 15:25:53

Re: IEからEDGEではまっています。 / しろまさ
> コンパネで標準ブラウザをIEに設定しなおしてもクロスケーブルで接続している基板を見に行こうとした際にEDGEに接続され上記COMエラーが発生してしまいます。

とりあえず↑これの対策
https://samurai-computer.com/how-to-stop-force-stwitching-internet-explorer-to-microsoft-edge/

No.1367 2021/09/22(Wed) 14:05:18

Re: IEからEDGEではまっています。 / ながいも
stuncloudさんしろまささん
ご回答いただきありがとうございました。
ワクチンの副反応で苦しんで中催促ばかりされるため取り急ぎの対策として
pcを復元ポイントで使えていたころまで戻し、オフラインで利用をさせ
年内にedge対応プログラムを作成しようかと思います。
ieとedgeは別物と考えUWscwebDriverを利用した新規設計にしようとおもいます。

No.1368 2021/09/23(Thu) 16:49:21
name属性が被ってしまった場合のvalueでの指定の仕方を教えて頂きたいです。 / kenken
管理人様お忙しい所失礼致します。

IEでUWSCを使用しておりましたがIEが使えなくなるのでEdgeに変更して作業を行いたいと思っております。

こちらの掲示板をご用意して頂けている事に感謝申し上げます。

お忙しい所大変恐縮ですが質問をさせてください。

-----------
●質問
-----------
call UwscWebDriver.uws

driver = WebDriver.Edge()

でEdgeを起動させた際に

<label><input type="radio" name="sex_cd" value="none" checked="checked"> 指定しない</label>
<label><input type="radio" name="sex_cd" value="0"> 男性</label>
<label><input type="radio" name="sex_cd" value="1"> 女性</label>

上記のようにname属性が被ってしまうためvalueで男性等を指定したいのですが、どうすればいいのでしょうか?


-----------
●目的
-----------
男性のラジオボタンにチェックを入れたい

submit = driver.FindElement("input[name=<#dbl>sex_cd")//
submit.Click()
Sleep(2)

これだと性別を指定しないになる為にvalueで性別を指定したいです

-----------
●試したコード
-----------
?@
submit = driver.FindElement("input[name=<#dbl>sex_cd,"0"]")// 男性
submit.Click()
Sleep(2)

?A
submit = driver.FindElement("sex_cd","value='0')// 男性
submit.Click()
Sleep(2)

お忙しい所大変恐縮ですがご教授頂けると幸いです。

No.1362 2021/09/14(Tue) 23:30:28

Re: name属性が被ってしまった場合のvalueでの指定の仕方を教えて頂きたいです。 / stuncloud
だいたい以下のようなやり方でできるはずです
# コードは動作確認してないので間違いがあったらごめんなさい
# でも考え方のヒントにはなると思います

案1: for-inしてvalueが一致したらクリック

selector = "input[name=<#dbl>sex_cd<#dbl>]"
for elem in driver.FindElements(selector) // FindElementsだと該当するものを配列で返す
 if elem.GetAttribute("value") = 0 then
  elem.Click()
  break
 endif
next

案2: セレクタでvalueも指定

// valueもattributeなので多分これでもできる
textblock male
input[name="sex_cd"][value="0"]
endtextblock

driver.FindElement(male).Click()

No.1363 2021/09/15(Wed) 00:47:04

Re: name属性が被ってしまった場合のvalueでの指定の仕方を教えて頂きたいです。 / kenken
早速の回答ありがとうございます。

教えて頂いた二つのコードはどちらも動きました!

これで一気に作業が進みます。

お忙しい中ありがとうございました。

No.1364 2021/09/15(Wed) 07:51:36
IEで実現していたパスワード入力の自動化は、Edge+WebDriverで対応できるのでしょうか? / maco
UWSC 仮 掲示板 管理人様・ご利用される皆様

初の投稿をさせていただきます。macoです。
質問させてください。


社内の標準ブラウザがEdgeに代わります。

その際、WebDriverを利用すればパスワード入力の自動化が継続利用できるのか知りたいと思います。
WebDriverを利用し、以下のソースを最大活用した対応はできるのでしょうか?

たとえば、以下のuwsソースにて、

// 起動したIEを取得
IE = GETACTIVEOLEOBJ("InternetExplorer.Application", "ログイン認証ページ")

上記のIE代入処理を、WebDriverのオブジェクトに置換するよいのでしょうか?
それとも、WebDriverの場合は全く別の方法に変更が必要なのでしょうか?

社内Webごとにパスワード入力画面があり、それ用のuwsファイルを複数用意しています。
それらのEdge対応は、小修正ですむのか、作り直し規模が要るのか把握したく、お知恵を拝借させてください。

小修整の場合は、事例をいただけるとそれを他のuwsにも反映させたいと思います。
お忙しいと思いますが、よろしくお願いいたします。



IEで利用しているuwsソース
――――――――――――――――――――――――
CALL common.uws // CALL "common.uws" でも良い

// 起動したIEを取得
IE = GETACTIVEOLEOBJ("InternetExplorer.Application", "ログイン認証ページ")

// IEの表示を待つ
While IE.Busy OR IE.readyState <> 4
SLEEP(0.1)
WEnd

// ユーザ名・パスワードを入力し反映
IE.document.frames("main").document.forms[0].username.value = cUserName
IE.document.frames("main").document.forms[0].password.value = cPassword
IE.document.frames("main").document.forms[0].submit()
――――――――――――――――――――――――
Edgeバージョン
バージョン 92.0.902.73 (公式ビルド) (64 ビット)

――――――――――――――――――――――――
用意したWebDriver
https://msedgewebdriverstorage.z22.web.core.windows.net/?prefix=92.0.902.73/

No.1355 2021/09/05(Sun) 20:54:52

Re: IEで実現していたパスワード入力の自動化は、Edge+WebDriverで対応できるのでしょうか? / stuncloud
WebDriverについて知りたいとのことですが、UWSCからの利用を想定してUwscWebDriver利用時の状況を説明します

これです
https://github.com/stuncloud/UwscWebDriver

基本的に同じ操作は出来ますが、IE用コードの使い回しは出来ません
すべて書き直しが必要になります

そして気になった点
> IE.document.frames("main").document.forms[0].username.value = cUserName
を見るにframeを使ったページのようですね
上で基本的に、と書きましたが例外もあり、frame操作は例外になります
需要がなかろうということでframe対応をしていなかったためです
(これはまあ、僕が機能を実装すれば出来るようになるんですが…)
とは言えframe内のページを(URL直指定で)個別に開けばいくらでも操作可能ではあります

あとGETACTIVEOLEOBJ相当のものがないです
つまりすでに起動しているブラウザを操作するすべがありません
(UwscWebDriverから起動したブラウザであれば後から再接続して操作することは可能なのですが)

というわけで
今のところUwscWebDriverで代替するのはmacoさんにとっては厳しい選択になるやもしれません
学習や実装に十分な時間が得られないのであれば難しいかと想います

とは言えこの結論だとあんまりなので、UwscWebDriver以外の手段も考えてみましょう
先ずは、今までの資産(IE用コード)の活用できる可能性がもしかしたらあるかも、という話をします

MS Edgeの『IEモード』を使って社内Webページを開くというのであれば、そのオブジェクトを外部から掴めるかもしれません
以前しゅんさんが書かれたこれ
https://junjun777.hatenablog.com/entry/20120212/uwsc_hwnd_ie_object
ですね
(まあこれもIHTMLDocument2なのでいわゆるIEオブジェクトと呼んでるやつとは異なるので多少コードが変わる可能性あり)
(あと実際試したことがないのでこの方法は使えないかもということは留意しといてください)

さて、最後に身もふたもない手段の話です!

MS Edgeであればログイン情報の保存と自動入力が可能なので
> パスワード入力の自動化
「だけ」が目的であればそれを使うのも手です
(むしろその方が楽だと思うのでこれが本命)

No.1356 2021/09/05(Sun) 23:38:40

Re: IEで実現していたパスワード入力の自動化は、Edge+WebDriverで対応できるのでしょうか? / maco
stuncloud様
返信、ありがとうございます。

>> パスワード入力の自動化
> 「だけ」が目的であればそれを使うのも手です(むしろその方が楽だと思うのでこれが本命)


実は、社内用のEdgeはパスワード保存が無効化されているのです。
万一を想定し、石橋を叩いて渡る対策、とのことでした……。



> 基本的に同じ操作は出来ますが、IE用コードの使い回しは出来ません
> すべて書き直しが必要になります
>
> そして気になった点
>> IE.document.frames("main").document.forms[0].username.value = cUserName
> を見るにframeを使ったページのようですね
> 上で基本的に、と書きましたが例外もあり、frame操作は例外になります



22年9月まではIEが使えると思います。
また、イントラ専用としてならIE起動はできるのかな、と淡い希望を抱いています。

上記を見て、勉強していきたいと思います。ありがとうございました。

No.1358 2021/09/07(Tue) 16:43:01

Re: IEで実現していたパスワード入力の自動化は、Edge+WebDriverで対応できるのでしょうか? / maco
stuncloud様・皆さま

以下のように対応しました。参考になれば。

Edgeの場合(指定ウィンドウの起動を検出したものの、IEオブジェクトを取得できない=Edgeが起動した)は、vbsを起動しパスワード設定(common.uws)を読み込み、SendKeysでユーザ名・パスワードを打ち込む。としました。

SendKeys利用のため、Edgeウィンドウにフォーカスが当たっていなければ失敗する可能性もあります。

ただ、もともとUWSCのスケジュール設定で、指定文字列のウィンドウが起動したときに、uwsファイルを実行するようにしていましたので、ほぼ問題になることはありません。


参考ソース
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
CALL common.uws  // CALL "common.uws" でも良い

Try
  // 起動したIEを取得
  IE = GETACTIVEOLEOBJ("InternetExplorer.Application", "Web Single Sign On")

  // IEの表示を待つ
  While IE.Busy OR IE.readyState <> 4
    SLEEP(0.1)
  WEnd

  IE.document.frames("main").document.forms[0].username.value = cUserName
  IE.document.frames("main").document.forms[0].password.value = cPassword
  IE.document.frames("main").document.forms[0].submit()
Except
  Exec("wscript SendKeys.vbs")
EndTry


SendKeys.vbsのイメージ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Dim objWS: Set objWS = CreateObject("WScript.Shell")

id = ユーザ名 読み込み処理
pw = パスワード 読み込み処理

objWS.SendKeys(id)
objWS.SendKeys("{TAB}")
objWS.SendKeys(pw)
objWS.SendKeys("{ENTER}")

No.1359 2021/09/13(Mon) 18:32:24

Re: IEで実現していたパスワード入力の自動化は、Edge+WebDriverで対応できるのでしょうか? / stuncloud
vbsの部分もUWSCで出来ますよ
(SendKeysもできるし、組み込みのkbd()でも良い)

No.1360 2021/09/13(Mon) 20:59:18

Re: IEで実現していたパスワード入力の自動化は、Edge+WebDriverで対応できるのでしょうか? / maco
> vbsの部分もUWSCで出来ますよ
> (SendKeysもできるし、組み込みのkbd()でも良い)


stunclound様、ありがとうございます。
以下のように変更することで、vbsが不要になりました。

Repeat〜Untilは、SendKeysでの入力失敗を想定しています。

−−−−−−−−−−−−−−−−−−−−−−−−−−
CALL common.uws // CALL "common.uws" でも良い


Const cTitle = "Web Single Sign On"

Try
 // 起動したIEを取得
 IE = GETACTIVEOLEOBJ("InternetExplorer.Application", cTitle)

 // IEの表示を待つ
 While IE.Busy OR IE.readyState <> 4
  SLEEP(0.1)
 WEnd

 IE.document.frames("main").document.forms[0].username.value = cUserName
 IE.document.frames("main").document.forms[0].password.value = cPassword
 IE.document.frames("main").document.forms[0].submit()
Except
 Dim objWS = CREATEOLEOBJ("Wscript.Shell")
 Repeat
  Sleep(cSleepSec)
  objWS.SendKeys("{DELETE}")
  objWS.SendKeys(cUserName)
  objWS.SendKeys("{TAB}")
  objWS.SendKeys(cPassword)
  objWS.SendKeys("{ENTER}")
 Until GETID(cTitle) = -1
EndTry

No.1361 2021/09/14(Tue) 12:11:43
mp3ファイルの各種情報の操作 / riu
mp3ファイルの長さの取得と、タグ情報の歌詞取得と編集方法が、
ヘルプをみてもわかりません。
どうすればいいか教えていただけないでしょうか。
pro版5.3.0.2を使っています。
タイムスタンプの自動挿入を考えているのですが、
出だしで躓いているのでコードを記すことができません。
どうぞよろしくお願いします。

No.1344 2021/08/31(Tue) 00:13:51

Re: mp3ファイルの各種情報の操作 / stuncloud
id3を使います
(僕はこれを使ってPowerShellでmp3の歌詞読み取りをやりました)

http://id3lib.sourceforge.net/

COM版があるようなのでそれを使えばcreateoleobjできるようになるはず

…よく見たらid3lib-3.8.3.zipの中にid3comがあるけど自分でビルドして登録しないといけないようですね…
win32.readme.first.txtに手順は書いてありますが…
ちょっと敷居高いな

# PowerShellならC#用のライブラリを使えば簡単にできます

No.1345 2021/08/31(Tue) 01:34:07

Re: mp3ファイルの各種情報の操作 / stuncloud
出どころ不明なid3com.dllを入手し試してみましたが正常に動作しませんでした

cddbcontrol.dllというのでもできそうなのですが、こちらも正規のダウンロード元が見つからず試せていません
このdllを同梱してるフリーソフトというのもあるようですが、それがなにかわかりませんでした
サンプルコードなら見つかります
https://www.motobit.com/tips/detpg_change-id3-tags-script/

No.1346 2021/08/31(Tue) 12:33:46

Re: mp3ファイルの各種情報の操作 / stuncloud
まだ見てるかな?
ちょっとDLLを作ってみました

https://drive.google.com/file/d/1-6M-I3AQ8soHB93AGnK6HAGNKWEBq_-6/view?usp=sharing

id3lyrics.zipというファイルです (sha256: 8F11896230FD0C526EFCD9E2E4B8EE832F93ECBCF670874EEB07B55A0FA1E078)
中身はid3lyrics.dllです

## 使い方

def_dll get_lyrics(wstring, var wstring, uint):uint:id3lyrics.dll
def_dll set_lyrics(wstring, wstring, wstring, wstring):uint:id3lyrics.dll

// 歌詞を見る

path = path\to\your.mp3
buffer = format(chr(0), 5000) // 歌詞を受け取るバッファ、サイズがわからんので大きめに
print get_lyrics(path, buffer) // 実際の歌詞(Unicode文字列)のサイズを返す
print buffer

// 歌詞をセット

textblock lyrics
[00:01.500]ほげほげ
[00:03.000]ふがふが
[00:05.000]ぴよぴよ
[00:06.500]ぽよ
endtextblock

set_lyrics(path, lyrics, "ja", "test") // ファイルパス、歌詞、言語、説明を渡す

## 補足

id3v2.3で書き込んでいます
同期歌詞というのも書き込めるようですが今回は実装していません

No.1354 2021/09/04(Sat) 18:51:05

Re: mp3ファイルの各種情報の操作 / riu
1です。今9/4に入ったものを確認しました。
丁寧な対応に痛み入ります。
最初の返信をみて、id3なるものを少しみてみましたが、
おっしゃるとおりで私には敷居の高いものでした。
ですので、少し時間をかけて理解しようと努めてみたのですが、
やはり難しい(時間を取りにくいと言うことも含め)ものでした。
そこで、お礼の書き込みだけでもさせて頂こうと思った矢先、
最後の返信を見つけた次第です。
今からそこを吟味させて頂こうと思います。
取り急ぎお礼まで。
しばらくかかると思いますが、また必ず書き込みに伺います。

No.1357 2021/09/07(Tue) 11:46:00
FindElementsオブジェクトに含まれるname、htmlの取得方法 / nyoshikawa
ie終了宣言から、やっとこちらにたどり着きました。uwscという素晴らしいツール、それに加えてuwsc webdriverを知り、既存のIE自動化部分をMS edge(chrome)対応しようと考えています。
早速ですが、
elements = driver.FindElements(...) で捉えたelements(配列?)オブジェクトの参照の仕方が分からず立ち往生しています。

elements = driver.FindElements(...)
msgbox(length(elements)) //1以上を確認
for EL in elements
szNAME = EL.getattribute(''name'') //これは取得できています。
szHTML = EL.getattribute(''outerHTML'') //使えますか?
 print szNAME + '' : '' + szHTML
next

length(elements)で1以上を確認はできていますが欲しいのは、その後、各elementの要素のnameとouterHTML(HTML文)を取得、列挙したいのですがnameしか取得できていません。outerHTML(HTML文)はどの様にすれば良いか、ご教授願えればありがたいです。参考にすべきURL、サンプルでも構いません。突然ですがよろしくお願いします。
p.s. uwsc webdriverは素晴らしいと思います。陰ながら応援させて頂きます。

No.1347 2021/09/01(Wed) 17:37:47

Re: FindElementsオブジェクトに含まれるname、htmlの取得方法 / stuncloud
JavaScriptを実行して取得できます

https://github.com/stuncloud/UwscWebDriver/wiki/driver%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88#ExecuteScript

サンプルコードでもouterHTML取ってますね


for EL in elements
 args = WebDriver.CreateJSArray()
 args.push(EL.raw())
 szHTML = driver.ExecuteScript("return arguments[0].outerHTML;", args)
 print szHTML
next

こんな感じで取れると思います

# 引数渡す仕組みがめんどうなのでどうにかしたいですね

No.1348 2021/09/01(Wed) 21:20:19

Re: FindElementsオブジェクトに含まれるname、htmlの取得方法 / nyoshikawa
stuncloudさま。速攻レスに深く感謝いたします。<(_ _)>

args = WebDriver.CreateJSArray()から...中略....
szHTML = driver.ExecuteScript("return arguments[0].outerHTML;", args)で
確認できました。

elements.getattribute("属性の名前") はHTMLに実際に表記されている属性名しかダメなのか、どうか、なかなか情報が少ないのでこの4日間ずっと苦労しているところでした。やっと、outerHTMLの試行錯誤のトンネルから脱出できました。

仮掲示板あって本当に助かりました。ありがとうございます。

No.1349 2021/09/01(Wed) 22:03:19

Re: FindElementsオブジェクトに含まれるname、htmlの取得方法 / stuncloud
> # 引数渡す仕組みがめんどうなのでどうにかしたいですね

対応しました
https://github.com/stuncloud/UwscWebDriver/releases/tag/0.7.2
これでやや楽に書けます

elem = driver.FindElement(selector)
outerHtml = driver.ExecuteScript("return arguments[0].outerHTML;", JS.Args(elem.raw()))

No.1350 2021/09/02(Thu) 11:59:23

Re: FindElementsオブジェクトに含まれるname、htmlの取得方法 / nyoshikawa
> > # 引数渡す仕組みがめんどうなのでどうにかしたいですね
> 対応しました
> https://github.com/stuncloud/UwscWebDriver/releases/tag/0.7.2
> これでやや楽に書けます
> elem = driver.FindElement(selector)
> outerHtml = driver.ExecuteScript("return arguments[0].outerHTML;", JS.Args(elem.raw()))


早々にバージョンアップ、ありがとうございます。
IE自動化で、既存の処理で、document.title や element.outerHTML, element.tagName は頻繁に使ってい経緯から、記述ミス防止のため、関数でカプセル化して短い記述で済む様にしようと思います。
driver.ExecuteScriptを使わずに取得できる項目と使わないとダメな項目の整理表があれば、良いかも知れません。未だにごっちゃ煮状態ですが、宜しくお願い致します<(_ _)>

No.1351 2021/09/02(Thu) 19:10:52

Re: FindElementsオブジェクトに含まれるname、htmlの取得方法 / stuncloud
> ExecuteScriptを使わずに取得できる項目と使わないとダメな項目
GetAttribute()で取れるのはその名の通りattributeなのでそうじゃないものは取れません
そこはHTMLの知識なのでさすがにご自身で勉強していただきたいかな

No.1352 2021/09/02(Thu) 20:18:00

Re: FindElementsオブジェクトに含まれるname、htmlの取得方法 / nyoshikawa
> > ExecuteScriptを使わずに取得できる項目と使わないとダメな項目
> GetAttribute()で取れるのはその名の通りattributeなのでそうじゃないものは取れません
> そこはHTMLの知識なのでさすがにご自身で勉強していただきたいかな


stuncloudさんのおっしゃるのはごもっともなお話しです。
緊急を要する目先の作業に追われ、体系立った事が
分かっていないのが原因ですが、自身で習得に励みます。<(_ _)>

No.1353 2021/09/03(Fri) 12:44:44
IEでボタン押したい / rin
getElementByIdやIESETDATAで下記のコードのボタンを押そうと思っているんですがどうもうまくいきません。座標を直接指定して押す以外で何か方法はありませんか?

<div class="text-center" style="margin-top: 20px;margin-bottom:0px">
<div class="btn btn-success ToNext">次へ</div>
</div>

失敗コード
DIM element = IE.document.getElementById("btn btn-success ToNext")
element.item(0).click()

IESETDATA(IE,True, "class=btn btn-success ToNext")

No.1341 2021/08/29(Sun) 20:36:15

Re: IEでボタン押したい / stuncloud
// querySelectorでcssセレクタを指定
element = IE.document.querySelector("div.btn.btn-success.ToNext")
element.click()

No.1342 2021/08/30(Mon) 01:43:45

Re: IEでボタン押したい / rin
動きました!
本っ当にありがとうございます!

No.1343 2021/08/31(Tue) 00:09:42
SetValue()の入力値に関して / sige
SetValue("abc123")など半角英数は問題なくセットされるのですが
SetValue("全角")を実行すると「チエウム」とセットされます。
色々検索してみたのですが文字制限に関しては見当たらなく
基本的な事なのかもしれませんが全角文字のセット方法を
御教授願えたらと思います。
ブラウザーはEdge Ver92.0.902.84
UwscWebDriverは0.7.1

No.1335 2021/08/29(Sun) 10:18:33

Re: SetValue()の入力値に関して / stuncloud
> SetValue("全角")を実行すると「チエウム」とセットされます。
再現しません
こちらのテスト環境では「全角」と入力されます

以下を可能な限り教えて下さい

・現象が再現するサイトのURL
・SetValueを行った対象エレメント

No.1336 2021/08/29(Sun) 12:34:57

Re: SetValue()の入力値に関して / sige
ご確認ありがとうございます。
driver.Navigate("http://top.hange.jp/login/?nexturl=http%3A%2F%2Fcasual.hange.jp%2Fchocotto%2Findex&kind=chocotto")
Sleep(1)
id="全角"
with driver.FindElement("#strmemberid")
.Clear()
.SetValue(id)
endwith
です。
ちなみにhttps://github.com/stuncloud/UwscWebDriver
sample2.uwsを実行すれば「やまだたろう」は入力されました
お忙しい所、申し訳ありませんが宜しくお願いします。

No.1337 2021/08/29(Sun) 13:06:19

Re: SetValue()の入力値に関して / stuncloud
> driver.Navigate("http://top.hange.jp/login/?nexturl=http%3A%2F%2Fcasual.hange.jp%2Fchocotto%2Findex&kind=chocotto")
> Sleep(1)
> id="全角"
> with driver.FindElement("#strmemberid")
> .Clear()
> .SetValue(id)
> endwith


これをそのまま試してみましたが、正常に「全角」と入力されました

MS Edge 92.0.902.84
MSEdgeDriver 92.0.902.9
で動作確認しています


該当サイトのエンコーディングが
> charset="shift_jis"
となっていたのでそのせいなのかな?とも思いましたがこちらでは特に問題なかったのでちょっとわかりません

id = encode("全角", CODE_ANSI) // sjisにする

で改善されるか試してもらえますか?

No.1338 2021/08/29(Sun) 15:38:29

Re: SetValue()の入力値に関して / sige
ご連絡有難う御座いました。
結果から申し上げますと解決いたしました。
やってみた事の経緯を書きます
1,id = encode("全角", CODE_ANSI) // sjisにする
 結果 改善されず
2,MSEdgeDriver 92.0.902.84→MSEdgeDriver 92.0.902.9に変更
 結果 改善されず
3,PC再起動して実行
 結果 改善されず
4,別のPCで実行
 結果 改善されず
ここまでやっても改善されず途方に暮れていたのですが
スクリプトファイルを編集しているテキストエディターの
モードが通常 日本語(シフトJIS)なのが日本語(EUC)に変わって
いたのに気づき日本語(シフトJIS)に変更保存し実行した所
改善されました。
補足ですが
id = encode("全角")でも
MSEdgeDriver 92.0.902.84でも
問題ありませんでした。
私の不手際で時間を費やして頂き大変ご迷惑をおかけしました。
また解らない事ありましたらこれに懲りずに御教授願います。

No.1339 2021/08/29(Sun) 17:39:19

Re: SetValue()の入力値に関して / stuncloud
ああなるほど…!
一応スクリプトファイルのエンコードもsjisやUTF8で差があるか確認してはいたんですが、まさかのeuc-jp…!
おそらくUWSC内部でも「チエウム」として認識されてたのだと思われます

蛇足ですが、旧Edgeだと半角カタカナが文字化けするという(webdriverの)不具合があったので、それと組み合わさっていたらと思うとゾッとしますね…!多分原因にたどり着けない…!

No.1340 2021/08/29(Sun) 19:13:11
UwscWebDriverで、画面遷移後のタイトルの取得方法 / もと
// UwscWebDriverで、画面遷移後のタイトルの取得方法を教えてください。
// 遷移前と同じになります。
driver = WebDriver.Chrome()
driver.Navigate("https://www.google.co.jp/")
print driver.GetTitle()  // Google
driver.Navigate("https://www.yahoo.co.jp/")
print driver.GetTitle()  // Google

// WebDriver.Connectすれば良いのかと思いやってみましたが同じでした。
driver = WebDriver.Chrome()
driver.Navigate("https://www.google.co.jp/")
print driver.GetTitle()  // Google
session = driver.GetSession()
driver = WebDriver.Connect(session)
driver.Navigate("https://www.yahoo.co.jp/")
print driver.GetTitle()  // Google

No.1331 2021/06/27(Sun) 16:36:46

Re: UwscWebDriverで、画面遷移後のタイトルの取得方法 / stuncloud
driver.ExecuteScriptでJavaScriptを実行できます
https://github.com/stuncloud/UwscWebDriver/wiki/driver%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88#ExecuteScript

これを使いdocument.title等でタイトルを取得してください

※ GetTitle()で画面遷移前のタイトルしか取れないのは仕様です
  (webdriverが返す値そのままなので)

No.1332 2021/06/27(Sun) 19:51:43

Re: UwscWebDriverで、画面遷移後のタイトルの取得方法 / もと
ありがとうございます。
No.1333 2021/06/27(Sun) 20:04:23
UwscWebDriver 0.6.0 / stuncloud
https://github.com/stuncloud/UwscWebDriver/releases/tag/0.6.0

変更点

・Byモジュールによりcssセレクタを直接書かなくてもよくなりました
https://github.com/stuncloud/UwscWebDriver/wiki/By%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB
・0.5.0で追加されたWebDriverOptionが使いやすくなりました
https://github.com/stuncloud/UwscWebDriver/wiki/WebDriverOption%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88

この更新に伴い使い方等をWikiに載せました
https://github.com/stuncloud/UwscWebDriver/wiki
これで多少は閲覧性が向上したかと思います

No.1315 2021/06/04(Fri) 14:16:09

Re: UwscWebDriver 0.6.0 / stuncloud
UwscWebDriverについての質問がある場合はこんなフォーマットでしてもらえると助かるな、というのを書いておきました

https://github.com/stuncloud/UwscWebDriver#%E4%B8%8D%E5%85%B7%E5%90%88%E5%A0%B1%E5%91%8A%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88

できればこの形式で質問してもらえると助かります

No.1316 2021/06/04(Fri) 14:18:52

UBrowserControl公開のお知らせ / stuncloud
それと、UwscWebDriverとは別のブラウザ操作用モジュールを公開しています

https://github.com/stuncloud/UBrowserControl

UBrowserControlモジュールです
これはwebdriverが不要で、モジュールだけでブラウザを操作できます
ただし開発中もいいとこで、いろいろと正常に動作しません
こちらはかなり不定期に更新されます
(あまり余力がないので開発が進んでいません)

興味のある方は遊んでみてください

No.1317 2021/06/04(Fri) 14:25:48

Re: UwscWebDriver 0.6.0 / ほいずん
UBrowserControlモジュール、可能性を感じます。

id = Browser.Chrome(9223)では、動作しませんが、9223の意味わからずなので、たぶんここだとは思うのですが、お手すきに教えていただけないでしょうか。

No.1318 2021/06/06(Sun) 18:39:59

Re: UwscWebDriver 0.6.0 / stuncloud
> 意味わからずなので
wiki見てください
https://github.com/stuncloud/UBrowserControl/wiki/%E4%BD%BF%E3%81%84%E6%96%B9#Browser.Chrome
ブラウザのデバッグ用ポートを指定する引数で、ほかのプロセスが使ってないポートを指定する必要があります

> 動作しませんが
どのように動作しないのか教えてもらえると直せたりします

> 可能性を感じます
可能性がありすぎて開発はめっちゃ大変です
webdriverの比じゃなかった!

No.1319 2021/06/06(Sun) 19:56:18

Re: UwscWebDriver 0.6.0 / ほいずん
デフォルト9222としても、待ち受けているプロセスがありません、と出ます。
MsEdgeでは、問題なく動作します。
開発のご苦労は、計り知れないと思いますが、応援します。

No.1320 2021/06/07(Mon) 11:47:38

Re: UwscWebDriver 0.6.0 / stuncloud
> 待ち受けているプロセスがありません、と出ます。

こちらでも再現しました
一度「ファイル名を指定して実行」から
> chrome --remote-debugging-port=9222
とやってみてから試してもらえますか
こちらではその後再現しなくなりました

再現した場合の対処法は今後の課題とします

No.1321 2021/06/07(Mon) 13:16:14

UwscWebDriver 0.7.0 / stuncloud
https://github.com/stuncloud/UwscWebDriver/releases/tag/0.7.0

driver.FindElement() // PascalCase
driver.findelement() // lowercase
driver.FINDELEMENT() // UPPERCASE
driver.findElement() // camelCase
driver.find_element() // snake_case

メソッド名の書き方バリエーションが増えました
JScriptは大文字小文字を区別するため、大文字小文字の違いで未定義エラーが発生します
今回の更新はそのあたりの不便さをやや緩和するためのものです

No.1322 2021/06/07(Mon) 13:23:12

Re: UBrowserControlモジュールについて / yanyan
getdocumentでCOMエラーがでたので、build.uwsをJson2選択で実行したら、UBrouserControl.uwsの中身が下記となってしまいました。お忙しいところ、恐縮ですが、対処をお願いします

----
module UBrowserControl
const Version = "0.0.1"
const Engine = "Json2"
endmodule

-1
-1
-1
-1
-1
-1
-1
-1
(EOF)

No.1323 2021/06/07(Mon) 14:21:46

Re: UBrowserControlモジュールについて / stuncloud
Modulesフォルダがbuild.uwsと同じ階層にないからです
(Modulesフォルダには各種.uwsファイルが含まれます)

ルートフォルダ
 |_src
  |_build.uws
  |_Modules
   |_ (各種モジュールファイル)

という構成でbuild.uwsを実行するとルートに正常なUBrowserControl.uwsが生成されます
build.uwsでファイルチェックを行うようにします
 →しました

No.1324 2021/06/07(Mon) 14:59:52

Re: UBrowserControlモジュールについて / stuncloud
ビルド方法についてreadmeに記載しました
https://github.com/stuncloud/UBrowserControl#%E3%83%93%E3%83%AB%E3%83%89%E6%96%B9%E6%B3%95

今回はドキュメントの不備で説明不足があったことを認めますし反省もしていますが
> お忙しいところ、恐縮ですが、対処をお願いします
まるで不具合であるかのように決めつけて修正を求めるような言い方はやめてください
例えば「このような結果が出ているが原因に心当たりはあるか?」というような質問なら良かったんですよ

しかし今回のように(説明不足だったとは言え結果として)あなたの不手際であったというのに
その点についてはまるで考えがなかったかのごとく、
そして僕が対処するのが当然のごとく「お願い」されても困ります

恐縮してりゃ何言ってもいいってわけじゃあないんだよ

No.1325 2021/06/07(Mon) 15:46:15

Re: UwscWebDriver 0.6.0 / yanyan
この度は、UWSCRの開発でお忙しい中、上から目線的な文言になってしまい申しありませんでした。対処などと、きつい言葉も使ってしまい、本当にすみません。
Dicordでも上げさせて頂きましたが、UwscWebDriverよりも使いやすくなると応援している者です。今後は現象報告とか質問形式となるよう文面に気を付けます。
お忙しい中、素人的な質問ばかりになるかと思いますが、今後ともよろしくお願いします。

今回、Json2に変更し、Chrome対象に実行(chrome --remote-debugging-port=9222も実行)したところ、navigateの途中で 内部のGetTabList処理と思われるエラー
UBROWSERCONTROL.UWS: 92行目: FOR ITEM IN LIST.ToSafeArray()が出力されました。
なおMsedgeではエラーなく、正常にnavigateされています。以上です。

No.1326 2021/06/07(Mon) 17:33:11

(No Subject) / stuncloud
存じております
以前discordでも言い回しが気になったことがあったのでそのへんの不満も込みでした
僕も気にしすぎなのかもしれませんが、かつて精神状態を悪くした結果生活が破たんしたような経験があるので、嫌だと思ったことはなるべく嫌だと表明してみるといった方針で生きながらえています
それが効果的なのかはわかりませんが…
まあその話はいいですね、やめましょう

ご指摘の件はこちらでも把握しており、結果としてToSafeArray()実行時にエラーになっているが実際の原因はjsonのパースに失敗してることだ、ということが最近になってわかってきました
なのでパース処理のエラーハンドリングをもう少し丁寧にやる、そしてそもそもエラーにならないようにするあたりが課題です

このモジュールのキモであるところのdevtools protocolにおけるwebsocketの利用方法について不慣れ…というか正しく扱えているのかすらわかっておらず、そのあたりの知識不足に起因して正しくjsonのやり取りができていない可能性があるという問題があるんですね
他言語の処理を参考にしようにもわからない部分はライブラリに吸収されており、そのライブラリは処理が追いきれず正解がわかりません…
なのでそのあたりがスッと解決しないと完成は程遠い感じです!

No.1327 2021/06/07(Mon) 21:10:52

UwscWebDriver 0.7.1 / stuncloud
https://github.com/stuncloud/UwscWebDriver/releases/tag/0.7.1

WebDriverDownloadを更新しました
chromedriverとmsedgedriverはその時点の最新(安定)版をダウンロードできるようになりました

thanks to しろまささん!

No.1330 2021/06/13(Sun) 17:33:09
Wordの中身をテキストに保存 / sousou
お世話になります。
表題と通り、Wordの中身をテキストに保存するには、どのようにすればいいのでしょうか、
4行目、5行目、何か足りないのでしょうか、動きません、多少なりでもわかる方、ご教授ください。
wd=CreateOLEObj("Word.Application")
wd.visible=True
wd.documents.add
Sheets("Sheet1").Range("A1:B10").Copy
wd.Selection.Copy

No.1328 2021/06/08(Tue) 20:58:19

Re: Wordの中身をテキストに保存 / しろまさ
https://officevba.info/maketxtfile/
これを読んでUWSCに書き直してください(未検証)

No.1329 2021/06/10(Thu) 08:58:11

以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : << 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 20 >> ]

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - メール - 環境設定 -

- Skin: Modern v2.0 - Author: ロケットBBS -

Rocket Board Type-X (Free) Rocket BBS