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

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

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
WebDriver 二段階認証が強制になってしまいます / もも
以前はIEで自動実行していたのですが、最近、サイト構造が変わってちゃんと
表示出来なくなったので、WebDriverにたどり着いてテストしています。

WebDriverでchromeでログインしようとすると必ず二段階認証でSMSメールを要求されてしまいます。
WebDriverでchrome起動後、手動でID/Pass入力しても二段階が来てしまうので、
ログイン作業まで手動にして後からWebDriverに引き継ぎして回避したいのですが、
どのようにすれば良いでしょうか?

サーバーからはWebdriver制御が分かる物なのでしょうか…
よろしくお願いします。

No.1308 2021/06/02(Wed) 16:01:54

Re: WebDriver 二段階認証が強制になってしまいます / stuncloud
・ブラウザ起動用のスクリプト
・ブラウザ操作用のスクリプト
を作成しておき

1. 起動用スクリプトでブラウザを立ち上げ、セッション情報を保存する
2. 認証作業を手動で実行する
3. 操作用スクリプトで保存したセッション情報を読み取り、ブラウザ操作を行う

といった回避手段があるにはあります
セッション情報の保存と読み取りについては以下を参照してください
https://github.com/stuncloud/UwscWebDriver/wiki/%E4%B8%80%E5%BA%A6%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%9F%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%AB%E5%86%8D%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B

また、次回から二段階認証を省くといった設定をブラウザ上で行っても次回起動時にそれが反映されていないということであれば、実行時にChromeのプロファイルを読み込ませておくことで前回の状態を復元できるようになるかもしれません
Chromeプロファイルの指定方法は以下を参照してください
https://github.com/stuncloud/UwscWebDriver/wiki/Chrome%E3%81%A7%E8%87%AA%E5%88%86%E3%81%AE%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%BF%E3%81%86
普段使っている状態のChromeをそのまま使いたい、といった場合もこの方法でOK

> サーバーからはWebdriver制御が分かる物なのでしょうか…
わかるかもしれませんが、今回はそういうことではないと思います
webdriver経由で起動するとまっさらな(初期状態の)ブラウザが立ち上がります、なのでcookieなどもまっさらです
そのため過去にアクセスしてきたブラウザかどうかなどがサーバー側に伝わらないということが考えられます
(なので上に書いたプロファイル読み込みでそのへんを回避できるという仕組み)

No.1309 2021/06/02(Wed) 16:51:42

Re: WebDriver 二段階認証が強制になってしまいます / もも
ありがとうございます!うまく自動ログインできました。

以前の回答も読んでもいまいち理解できなかったのですが、
> webdriver経由で起動するとまっさらな(初期状態の)ブラウザが立ち上がります、
> なのでcookieなどもまっさらです


これでやっと意味と状況が把握できてプロファイル指定しました。

順番が逆になってしまいましたが、本来の質問だった引き継ぎですが、
GetActiveOleObj()で後からIE捕まえられたUWSCで横着を覚えてると
途中からWebDriverに引き継ぐのはちょっと面倒みたいですね…

ところでWebDriverはUWSCのIE_Recで生成されるBusyWait()やIE.Busyなどのように、
更新後の描画待ちの作業はいらないのでしょうか?

あと[Ctrl]+Aでブラウザ内容をコピペしたいので、ブラウザ画面にフォーカスを
与えたいのですが、ただの文字に対してクリックとか出来ますか?
IEの時は画面キャプチャで文字を画像比較してクリックしてたのですが、文字の
キャプチャなのでWin10の綺麗になったレンダリングのせいか同一チェックがしんどい…

No.1310 2021/06/02(Wed) 22:42:53

Re: WebDriver 二段階認証が強制になってしまいます / stuncloud
> ところでWebDriverはUWSCのIE_Recで生成されるBusyWait()やIE.Busyなどのように、
> 更新後の描画待ちの作業はいらないのでしょうか?

原則不要ですが、取りこぼしが生じるようでしたら
repeat
 sleep(1)
 elem = driver.FindElement(selector)
until elem <> NULL
として取得したいエレメントが取得できるまで待つ
という処理を入れることで任意のタイミングで待機ができます

> あと[Ctrl]+Aでブラウザ内容をコピペしたいので、ブラウザ画面にフォーカスを
> 与えたいのですが、ただの文字に対してクリックとか出来ますか?

状況がよくわかりませんがctrl+aはUWSCのsckey()やkbd()を使ってください
任意のエレメントをフォーカスしたいのであればdriver.ExecuteScript()でjavascriptを実行してエレメントのfocus()を叩くといったことは可能です

> IEの時は画面キャプチャで文字を画像比較してクリックしてたのですが、文字の
> キャプチャなのでWin10の綺麗になったレンダリングのせいか同一チェックがしんどい…

表示文字列の比較をなぜ画像で行っているのかいまいちわかりませんが
ある文字を含む要素を探すのであればelement.GetText()でテキストを取って
UWSCのpos()関数で有無を調べるといった方法が画像も不要で楽ではないかと思われます

canvasに描画されている、ということであればその方法は使えませんが…
その場合は画像を用いるのが最適解だという気はします

No.1311 2021/06/03(Thu) 01:27:07

Re: WebDriver 二段階認証が強制になってしまいます / もも
おせわになります…

IEは(chromeも?)、URL開いたりしたら、画面遷移直後はブラウザの
描画面にフォーカスが無いので、

ScKey(IE_ID, VK_CTRL, VK_A) //Ctrl+A

これが動かないので、事前にブラウザの描画面を
適当にクリックしてCtrl+Aが効くようにフォーカスを当てたいのです。

エレメントがよく分かってないのですが、
クリックしたいのは地の文(何の効果もタグも無いただの文章)です。

https://www.google.com/webhp?hl=ja
の左下の「日本」とか。(これはclass指定で叩けそう?)

描画面にフォーカスがいってScKey()が効くようになればなんでもいいんですが
他に方法が思いつきません…

>表示文字列の比較をなぜ画像で行って
スキルが足りなくて、スライドして出てくるクリック選択肢等の解析を諦めて
画面キャプチャして該当部分を画像切り出して画像判別で選択肢クリックを
実現しているからです。ハンバーガアイコンから出てくるメニューとか

No.1312 2021/06/03(Thu) 15:40:00

Re: WebDriver 二段階認証が強制になってしまいます / stuncloud
> IEは(chromeも?)、URL開いたりしたら、画面遷移直後はブラウザの
> 描画面にフォーカスが無いので、

ctrlwin()でactivateしてください

一応バックグラウンドであってもctrl+aからのコピー的なことはできます

// 画面に描画されている文字列を全部取得
alltext = driver.FindElement("body").GetText()

> エレメントがよく分かってないのですが、
> クリックしたいのは地の文(何の効果もタグも無いただの文章)です。

エレメントというのはタグのことだと思ってもらってほぼ大丈夫です
(タグそのもののオブジェクトというか)

地の文といってもdivなりpなりなにかしらのタグに入っているはずなので
そのエレメント(タグのオブジェクト)を取ってこれれば情報が抜き出せるということです
タグの指定方法は

driver.FindElement("div") // divタグ
driver.FindElement(".hoge") // class="hoge"
driver.FindElement("div.hoge") // class="hogeのdiv
driver.FindElement("#fuga") // id="fuga"

というように、cssセレクタと呼ばれる文字列を指定します
cssセレクタに関しては解説サイトがごまんとあるのでそちらで確認してみてください
ちなみに上に書いた
> alltext = driver.FindElement("body").GetText()
はbodyタグ以下の文字コンテンツを全部取る、ということをしています

> の左下の「日本」とか。(これはclass指定で叩けそう?)
クラス名が一意なので直接それを指定します

driver.FindElement("div.uU7dJb").Click()

googleのトップページを開くと検索テキストボックスがフォーカスされていますが
これを実行するとそのフォーカスが外れることが確認できると思います


> スキルが足りなくて、
これを言われるとこちらとしても返す言葉がありません、正直
UWSCWebDriverはその言葉を借りれば「スキルのある人向け」です
・HTMLに理解がある
・DOMに理解がある
・CSSセレクタに理解がある
・開発者ツールが使える
程度のことができる人を想定してます
(そういう人を想定しているという注意書きはありませんけど)
なので、スキルがないのでわかりません、ということであれば
ではスキルを獲得していただく必要があります、としか返せません

ですので現状スキル不足の認識があるのでしたら
できる範囲でやっていただくしかないです
> スライドして出てくるクリック選択肢等の解析を諦めて
> 画面キャプチャして該当部分を画像切り出して画像判別で選択肢クリックを
> 実現しているからです。ハンバーガアイコンから出てくるメニューとか

つまりこのようなことを引き続きやるしかない、ということになります
(まぁ、UWSCはこうした創意工夫をやれる余地があるのでそれを最大限やるのは良いことです)

とは言えそういう方を突き放そうとかそういうことではないので
(さすがに掲示板で上記のスキルを得られるまでのサポートは無理ですが)
今一番やりたいことで実現できていないものがあるのならば
・対象サイトの情報 (urlやその他補足情報)
・何をしたいか (操作の順序、得たい情報の詳細)
あたりを教えていただければ具体的なコードの提示も可能です

No.1313 2021/06/03(Thu) 17:35:24

Re: WebDriver 二段階認証が強制になってしまいます / もも
stuncloud 様

せっかく対応していただいてるのに不快にさせてしまったようで申し訳ないです。

> > スキルが足りなくて、
> これを言われるとこちらとしても返す言葉がありません、正直


これは、自分がとても低レベルの対処をしててstuncloud様に理解されなかったのだろうと
申し訳ない気持ちで「実はこういうことをしています」という説明を書いたつもりでした。
無知を開き直ったり対処を強引に要求しているつもりはありません。

> ですので現状スキル不足の認識があるのでしたら
> できる範囲でやっていただくしかないです


これは当然と考えてます。ただでさえ付き合っていただいてて申し訳ない感じですし…

最初に書いてたように、IEで実現していた内容をChromeで焼き直そうとしていて、
はまったログインさえ突破できれば、後はたぶん作れるんですが、
せっかくならスマートで無い部分も綺麗に出来ればと興味本位で質問していました。


> > IEは(chromeも?)、URL開いたりしたら、画面遷移直後はブラウザの
> > 描画面にフォーカスが無いので、
> ctrlwin()でactivateしてください


driver.Navigate("http://example.selenium.jp/reserveApp_Renewal/")
Chrome_ID = GetID("Google Chrome","Chrome_WidgetWin_1",-1)
CtrlWin(Chrome_ID, ACTIVATE) //Chromeを前面に
CtrlWin(Chrome_ID, MAX) //Chromeを最大化
Sleep(2)
ScKey(Chrome_ID, VK_CTRL, VK_A) //Ctrl+A
ScKey(Chrome_ID, VK_CTRL, VK_C)
//こんな感じにしてみましたがダメでした。しかし下のbody取得でうまくいきそうです。

> // 画面に描画されている文字列を全部取得
> alltext = driver.FindElement("body").GetText()

bodyよりCtrl+Aの方が画面通りに取れて後加工が楽なので多用してましたが、
今回試したらbodyでも問題なさそうです。試してみるもんですね。

> 地の文といってもdivなりpなりなにかしらのタグに入っているはずなので
> そのエレメント(タグのオブジェクト)を取ってこれれば情報が抜き出せるということです

有りました。

> とは言えそういう方を突き放そうとかそういうことではないので
> (さすがに掲示板で上記のスキルを得られるまでのサポートは無理ですが)


相手していただいてるだけでもありがたいです。
会社では合間にしかテストできず、家は環境が無い為、
テストより質問が先行していて申し訳ないです。

> ・対象サイトの情報 (urlやその他補足情報)

決して迷惑系ではないのですが、書いてしまうと、それはそれでこちらに
障りがありそうなので書かないのがマナーかなと考えてます。
具体的な提示が何も無いのに対応していただいてて感謝です。

No.1314 2021/06/04(Fri) 02:14:35
UwscWebDriverでedgeを非表示で起動したいです。 / hiro
お疲れ様です。

InternetExplorerをCOMオブジェクトの場合は、

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = False

ですが、UwscWebDriverでEdgeを非表示で起動したいのですが、
ご教授よろしくお願いいたします。

No.1301 2021/05/25(Tue) 01:50:35

Re: UwscWebDriverでedgeを非表示で起動したいです。 / stuncloud
headlessモードで起動する必要があります
そのためにはcapabilities(起動オプションや設定などを定義したjson)を自分で書く必要があります

以下がChromeの例です
https://github.com/stuncloud/UwscWebDriver/wiki/Headless-chrome%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B

ChromiumベースのMS Edgeであればargsにheadlessを指定することでheadless(非表示)モードにできるのではないかと思われます
https://docs.microsoft.com/ja-jp/microsoft-edge/webdriver-chromium/capabilities-edge-options#%E8%AA%8D%E8%AD%98%E3%81%95%E3%82%8C%E3%82%8B-capabilitiesrecognized-capabilities
> Microsoft Edge 固有の Capabilities は、ほとんどが EdgeOptions オブジェクトを通じて発行され ます。 一部の言語では、Capabilities は EdgeOptions クラスによって実装され ます。 他の言語では、Capabilities は DesiredCapabilities の ms:edgeOptions ディクショナリの下に保存され ます。
とのことですので、Chromeの例にある goog:chromeOptions の部分を ms:edgeOptions に書き換えればそのまま動くかもしれません
あとbrowserNameをchromeではなくmsedge?だとかに書き換える必要もあるかもしれないです

憶測ばかりで申し訳ありませんが、このあたりの機能は「わかってる人」向けになってまして、僕もそこまで詳しく把握していないためにこのような回答しかできないのです
UWSCWebDriverの機能として非表示実行を用意できればいいのですが、今のところ全く余力がないため更新予定はありません
ご不便をおかけしますがご了承ください

No.1302 2021/05/25(Tue) 04:05:46

Re: UwscWebDriverでedgeを非表示で起動したいです。 / stuncloud
こちらもwikiに具体的な方法を書きました

https://github.com/stuncloud/UwscWebDriver/wiki/MsEdge%E3%81%A7%E3%83%98%E3%83%83%E3%83%89%E3%83%AC%E3%82%B9%E5%AE%9F%E8%A1%8C

No.1305 2021/05/28(Fri) 23:24:34

Re: UwscWebDriverでedgeを非表示で起動したいです。 / hiro

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

これで、IEが無くなる前にEdgeで何とかなりそうです。

No.1307 2021/06/02(Wed) 00:41:31
UwscWebDriverにて既存のprofileを指定して起動 / nis
こんにちは

chromeにて2段階認証のあるサイトを自動化したいので、既存のprofileを指定して起動しようと思い、色々調べてみましたが見つかりません

何か方法があればご教授お願い致します。

No.1303 2021/05/28(Fri) 21:17:30

Re: UwscWebDriverにて既存のprofileを指定して起動 / stuncloud
この手の情報はSeleniumでやっているのを探すと見つかります
selenium chrome profile
で検索したところ以下が見つかりました

https://qiita.com/Hidenatsu/items/e43ba04b4b5f710784e6

要約するとchromeの起動オプションでプロファイルを読み込ませればいいということがわかります
> --user-data-dir={プロファイルのあるディレクトリ}
> --profile-directory={プロファイル名}

が渡っていれば良いということになります

UwscWebDriverでこの手のことをやる場合はcapabilitiesを自分で作成し指定する必要があります
https://chromedriver.chromium.org/capabilities#h.p_ID_102

> capabilities.alwaysMatch.goog:chromeOptions.args[]
が起動オプションを書く場所です

とまぁおそらくこの説明ではせんぜん伝わらないのでしょうからwikiに具体的なのを書いておきました

https://github.com/stuncloud/UwscWebDriver/wiki/Chrome%E3%81%A7%E8%87%AA%E5%88%86%E3%81%AE%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%BF%E3%81%86

さらにオプションを加えたいという場合はこれを参考にcapabilitiesを記述してみてください

No.1304 2021/05/28(Fri) 23:08:46

Re: UwscWebDriverにて既存のprofileを指定して起動 / nis
上手く起動しました
コードまで記載して頂きありがとうございます
助かりました!!

No.1306 2021/05/28(Fri) 23:42:45
webページのソース取得 / ssk
無限スクロールのwebページで、
最下部までの全体のソースが欲しいのですが、
したのコードでは、1ページのみしか取得出来ないようですが
他に方法はありますか?


//---実行部分
url = "https://***"
source = GetPage(url)

MSGBOX("バイト数:" + LENGTHB(source))


//---関数部分 ウェブページのソース取得
Function GetPage(PageURL)
  msXMLhttp = CREATEOLEOBJ("Microsoft.XMLhttp")
  msXMLhttp.open("GET", PageURL, 0) //async=false(=0)
  msXMLhttp.send()
  Result = msXMLhttp.responseText
Fend

No.1299 2021/05/14(Fri) 01:29:53

Re: webページのソース取得 / stuncloud
> 他に方法はありますか?
Google Chromeなどを利用したスクレイピングになるかと思います
しかし、スクロール時に表示される部分の取得はWebサイトごとの実装によって変わると思われるため、具体的な方法の提示はできません
おおまかな流れとしては、スクロールをして追加された部分を検出してそのOuterHTMLを得る、という感じでしょうか
> スクロールをして追加された部分を検出
がページの実装によって変わります

なお、ソース取得というよりデータ取得が本来の目的でああるのならば、上記を行う過程で必要なデータを抽出するほうが楽です
(ソースからデータを得る場合別途解析処理が必要になるため)

No.1300 2021/05/14(Fri) 09:14:36
日付の形式を変え、日本時間に直したい。 / YMK
お世話になります。

"Mon May 10 07:10:03 +0000 2021"
で与えられたときに、2021/05/11 16:10:03
の形式にしたいのですが、行き詰まってしまいます。

str = "Mon May 10 07:10:03 +0000 2021"

obj = CreateOleObj("ScriptControl")
obj.Language = "VBScript"
年 = obj.Eval("Right(<#dbl>" +str +"<#dbl>,4)") //後ろ4文字
年月日 = 年 +copy(str,4,7)
日時 = 年月日 +copy(str,11,9) // 2021 May 10 07:10:03

//cdate関数
日付 = obj.Eval("cdate(<#dbl>"+ 日時 +"<#dbl>)") //日付に変換

msgbox(VarType(GetTime(0.375,日付)/86400 +36526, VAR_DATE)) //日本時間に修正

日付までは上手く取得で出きるのですが、日本時間に修正が出来ません。

ご教授、よろしくお願いいたします。

No.1295 2021/05/12(Wed) 01:46:51

Re: 日付の形式を変え、日本時間に直したい。 / stuncloud
> "Mon May 10 07:10:03 +0000 2021"
を "Mon May 10 07:10:03 UTC+0000 2021" に書き換えればjscriptで処理できるのでそれを使います

str = "Mon May 10 07:10:03 +0000 2021"
日付 = replace(str, "+", "UTC+")
with createoleobj("ScriptControl")
 .Language = "jscript"
 .ExecuteStatement(jsDateFormat)
 .ExecuteStatement("var d = new Date('" + 日付 + "');") // Mon May 10 07:10:03 UTC+0000 2021 ならnew Date()できる
 // d = .Eval("d.toLocaleString()") // 2021年5月10日 16:10:03
 d = .Eval("formatDate(d)")
 msgbox(d) // 2021/05/10 16:10:03
endwith

// yyyy/MM/dd hh:mm:ss形式にする関数
textblock jsDateFormat
function formatDate(date) {
var f = date.getFullYear() + '/' +
('00' + (date.getMonth() + 1)).slice(-2) + '/' +
('00' + date.getDate()).slice(-2) + ' ' +
('00' + date.getHours()).slice(-2) + ':' +
('00' + date.getMinutes()).slice(-2) + ':' +
('00' + date.getSeconds()).slice(-2);
return f;
}
endtextblock

No.1296 2021/05/12(Wed) 12:15:55

Re: 日付の形式を変え、日本時間に直したい。 / miles
> msgbox(VarType(GetTime(0.375,日付)/86400 +36526, VAR_DATE)) //日本時間に修正
日付の時間が、" 7:10:03" でエラーになっている。
(It is wrong date:2021/05/10 7:10:03) -> (正) 07:10:03

> 日付 = obj.Eval("cdate(<#dbl>"+ 日時 +"<#dbl>)") //日付に変換
日付 = obj.Eval("cdate(<#dbl>"+ 年月日 +"<#dbl>)") + copy(str,11,9) //日付に変換
にしたら、どうですか?

No.1297 2021/05/12(Wed) 20:42:32

Re: 日付の形式を変え、日本時間に直したい。 / YMK
>stuncloud さん
有難うございます、動作できました。
色々分からない関数がありましたので、自分で調べようと思います。

>miles さん
年月日部分だけをcdate関数に入れたら良かったんですね。
有難うございます。

No.1298 2021/05/13(Thu) 00:42:49
SCKEY キーを変数で入力 / tracky
エクセルからWSHを使ってキー操作を引数として実行することを考えています。
試しに改ページ画面にする操作でテストしています。

この2つは動作します。
SCKEY(ID,164,87,73)
SCKEY(ID,VK_LMENU,VK_W,VK_I)

しかし、キーを変数にしたときは動作しませんでした。
KeyStr="164,87,73"
SCKEY(ID,KeyStr)

KeyStr="VK_LMENU,VK_W,VK_I"
SCKEY(ID,KeyStr)

どうすれば動作できるか教えて頂けると助かります。
よろしくお願いします。

No.1292 2021/04/30(Fri) 21:12:36

Re: SCKEY キーを変数で入力 / stuncloud
sckeyが受けられる文字列はアルファベット一文字のみです

変数に入れたいのであれば本来なら

key1 = 164
key2 = 87
key3 = 73
sckey(id, key1, key2, key3)



dim keys[] = VK_LMENU,VK_W,VK_I
sckey(id, keys[0], keys[1], keys[2])

といった感じでやるしかない、ということになってます
…が!
あえてカンマ区切りの文字列でやりたいというのであれば
こんな方法があります

KeyStr="VK_LMENU,VK_W,VK_I"
eval("sckey(id, " + KeyStr + ")")

お試しあれ
(この場合カンマ区切りじゃないとできません)
(仕組みに興味があるならヘルプでevalを調べてみてね)

No.1293 2021/04/30(Fri) 22:10:54

Re: SCKEY キーを変数で入力 / tracky
stuncloudさん、早速ご回答ありがとうございます。

押下するキーの個数が一定ではないのでevalを調べて使ってみようと思います。
助かりました!!

No.1294 2021/05/01(Sat) 17:36:02

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

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

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

Rocket Board Type-X (Free) Rocket BBS