[[20210824125135]] 『WebDriverをVBAで動かす』(696) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『WebDriverをVBAで動かす』(696)

御紹介頂きました
ttps://qiita.com/uezo/items/66e20b064ffd5f239b9a
を読みましてTinySeleniumVBAを用いずに動くよう挑戦しています。


先の質問と同じサイトを操作するための記述での質問です。
●目的サイト
ttps://www.idaten.ne.jp/portal/EOCCAK001_logout.html/

質問番号20210824105328にて助言頂きましたのと同じ原因でname属性重複のため値入力が出来ません。こちらの方式では(1)といった記述が出来ないようで、どのように条件指定を行うべきでしょう?


    ' 検索テキストボックスを取得するためのパラメータを準備
    Dim elmparams As New Dictionary
    elmparams.Add "using", "css selector"
    elmparams.Add "value", "[name=""IdatenPassWord""]"

    ' 検索テキストボックスを取得して`elementId`に控えておく
    Dim elementId As String
    elementId = SendRequest("POST", "http://localhost:9515/session/" + sessionId + "/element", elmparams)("value")("element-6066-11e4-a52e-4f735466cecf")

    ' 代入するテキストを準備
    Dim text As String
    text = Range("H19")

    ' 1文字ずつに区切る
    Dim chars() As String
    ReDim chars(Len(text) - 1)
    Dim i As Integer
    For i = 0 To UBound(chars)
        chars(i) = Mid(text, i + 1, 1)
    Next

    ' 値入力用のパラメータを準備
    Dim valparams As New Dictionary
    valparams.Add "text", text
    valparams.Add "value", chars

    ' 値入力の指示
    SendRequest "POST", "http://localhost:9515/session/" + sessionId + "/element/" + elementId + "/value", valparams

< 使用 Excel:Office365、使用 OS:Windows10 >


 SeleniumBasic もTinySeleniumVBAも使ったことないので、ちょろっと読んでみましたが、
 TinySeleniumVBA 導入したならなぜ TinySeleniumVBA の機能をつかわないんですか?

 TinySeleniumVBAにもFindElementというメソッドが用意されてるので、それを使えばいいのでは?
 TinySeleniumVBAのFindElementメソッドで使える要素の種類は、以下です。
 Public Enum By
    ID = 0
    TagName = 1
    ClassName = 2
    Name = 3
    CssSelector = 4
    Xpath = 5
 End Enum
 で、これの何を使えばいいかは、HTMLのソースを読んで考えるしかありません。

 ・TinySeleniumVBAの使い方を把握すること
 ・接続先のHTMLソースを読んである程度分析すること
 の2点が必要です。
 いずれもExcelの範疇ではないと思いますが。
(´・ω・`) 2021/08/24(火) 14:26

失礼しました。
言葉足らずで申し訳ございません。

TinySeleniumVBAを導入してみたのですが後々のメンテ性を考えるとメンバーが広範に理解できないために避けたいと要望されまして、クラスモジュールなしのVBA記述でWebDriverを稼働させることを目指しております。

(696) 2021/08/24(火) 14:42


誤解を招いたようですが、
私はSeleniumBasicを推したつもりでした。
ネット上の情報もそれの方が圧倒的に多いでしょう。

素手で取り組むことが、貴方には理解できても、
広範の方の理解しやすさに繋がるとはとても思えません。
悪い冗談では?そんな簡単なものでは無いと思います。

TinySeleniumVBAはまだ初期故障が出切っていないと思いますし、
仮にそれを使うにしてももう少し待った方が賢明です。
出先なので取り急ぎ。

(γ) 2021/08/24(火) 15:31


ご丁寧にありがとうございます。
以下の理由で両案の利用を控えたいとの意向が御座います。

●SeleniumBasic
⇒導入にシステム部の許可が必要になるため組織内で気軽に利用できないため

●TinySeleniumVBA
⇒御指摘の通り初期故障が出切っていない可能性が高いため

そのため、VBAからSeleniumBasicをインストールすることなくVBAから直接ChromeやEdge(のWebDriver)を操作する方法を採用したいと研究しており、今回の質問となりました。

(696) 2021/08/24(火) 15:41


 >後々のメンテ性を考えるとメンバーが広範に理解できない
 逆でしょう
 理解しやい&使い易いようにモジュールを用意しているのであって、
 WebDriverと直接やりとりする方がずっとわかりにくいと思います。

 >初期故障が出切っていない
 TinySeleniumVBAの作者よりよいコードをかける自信があるんですね。

 まあ、その辺はどうでもいいですが。

 TinySeleniumVBAはコードがすべて公開されていてしかも短いです。
 開発段階ではまず 
 (1)TinySeleniumVBAを使って動くコードを書く
 (2)TinySeleniumVBAのプロシジャをインラインで書き下す
 という手順を踏めばいいんじゃないですか?

 TinySeleniumVBAはコードが全部見えているので、何の意味もないと思いますが
(´・ω・`) 2021/08/24(火) 15:52

| >初期故障が出切っていない
| TinySeleniumVBAの作者よりよいコードをかける自信があるんですね。
そういう意味ではなく、SeleniumBasicのほうが相対的に枯れているだろう、
という意味で申し上げました。
chromeドライバーを利用した場合、ポート番号が違いますし、
Exampleを実行したときに、時々実行時エラー513が出ました。
環境要因かもしれませんが。以上です。

(γ) 2021/08/24(火) 16:26


 γさんに申し上げた訳ではありません。
 >SeleniumBasicのほうが相対的に枯れているだろう
 これはわかります。そのためSeleniumBasicを使うというのもわかります。

 でも、自分でフルスクラッチで書くというの選択をするのはよくわかりません。
 コードは全部見えているので、使えるところは使いつつ、
 エラーが出たら直せばいいのにと思います
(´・ω・`) 2021/08/24(火) 16:35

アドバイスありがとうございました。

解読進めたほうが簡単なのに
なぜわざわざ面倒な二度手間を……ということですよね。
仰る通りだと思います。

御提案頂いたプランに方針変更いたします。
(696) 2021/08/24(火) 18:17


少し気になることがありましたので遅ればせながらコメント。
導入についてですが、
chromedriver.exeなどは議論なしにOKなんですか?
これが無ければTinySeleniumVBAがあっても動作しませんよ。
私は必要なら交渉すべきだと思うのですが、
chromed riverなどが話題に登らないのが不思議だったので。
(γ) 2021/08/27(金) 12:38

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.