質問 調査依頼
使用するライブラリについて
今回の質問は、以下Githubのリポジトリのクラスを全てマクロファイルに
インポートし、VBAでChromeのdom操作を行う上での質問です。
解決したいこと
添付画像とソースコードを見てほしいです。
今回のWebサイト上のそれぞれの入力欄に文字を入力させたい、
選択形式の欄では選択肢を選択させたいです。
このWebサイトについて
このWebサイトはメールアドレス、パスワードでログインが必要ですが、
捨ててもいいメールアドレスでアカウント登録してあります。
URL、メールアドレス、パスワードはソースコード中に記載してあります。
また、このサイト環境は無料トライアル期間(14日間)が過ぎるとアクセスできなくなります。
このアカウントは、2023/10/19に登録したので、2023/10/19から14日間です。
※記載したソースコードについては、あくまでこのような処理を行いたいというイメージになります。
XPathを貼り付けただけで、実際には動作しません。。。
ソースコード
'---------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------
Sub freshlog()
Dim chrome As IWebDriver
Set chrome = New ChromeDriver
chrome.OpenURL "https://company99vba.freshservice.com/a/tickets/new"
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------ログイン画面で、なぜかSetTextした文字列が消えてしまう--------------------------------------------------------------------------------------------------
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
chrome.WaitForElementToAppearByXpath "/html/body/div[4]/div[2]/div/div/div/div/div/div[2]/div[1]", 30
Application.wait Now() + TimeValue("00:00:03")
'メールアドレス
chrome.FindElementByXPath("/html/body/div[4]/div[2]/div/div/div/div/div/div[2]/div[1]/form/div[2]/div[1]/div[2]/div/div/input").SetText "sutemailaddress53+03@gmail.com"
Application.wait Now() + TimeValue("00:00:01")
'パスワード
chrome.FindElementByXPath("/html/body/div[4]/div[2]/div/div/div/div/div/div[2]/div[1]/form/div[2]/div[2]/div[2]/div/div/input").SetText "cVBn-099"
Application.wait Now() + TimeValue("00:00:01")
'Sign inボタンをクリック(入力した文字が消えてしまうため、コメントアウト中)
'chrome.FindElementByXPath("/html/body/div[4]/div[2]/div/div/div/div/div/div[2]/div[1]/form/div[2]/div[4]/div/button").Click
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------以下はログ入力画面-------------------------------------------------------------------------------------------------------------------------------------
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
chrome.WaitForElementToAppearByXpath "/html/body/div[4]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]", 30
Application.wait Now() + TimeValue("00:00:03")
'依頼者欄に社員番号を入力
chrome.FindElementByXPath("/html/body/div[3]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[1]/div/div[1]/div[1]/div[1]/input").SetText "10009902"
'検索ヒットした依頼者をクリック
chrome.FindElementByXPath("/html/body/div[6]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[1]/div/div[1]/div[1]/div[2]/div/ul/li").Click
'件名を入力
chrome.FindElementByXPath("/html/body/div[6]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[4]/input").SetText "請求伝票から登録日と金額を教えてほしい。"
'ステータス欄をクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[6]/div[1]/div[1]").Click
'完結済みをクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[6]/div[1]/div[2]/div/ul/li[3]").Click
'グループ欄をクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[10]/div[1]/div[1]/input").Click
'S/4_SYSTEMをクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[10]/div[1]/div[2]/div/ul/li[12]").Click
'エージェント欄をクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[11]/div[1]/div[1]").Click
'employee 03をクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[11]/div[1]/div[2]/div/ul/li[3]").Click
'詳細を入力
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[13]/div[1]/div[3]/div/div").SetText "登録日 2023/10/1 金額 ¥9,300"
'カテゴリ欄をクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[14]/div[1]/div[1]/input").Click
'Customer Paymentをクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[14]/div[1]/div[2]/div/ul/li[19]").Click
'サブカテゴリ欄をクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[15]/div[1]/div[1]/div[1]").Click
'Credit Noteをクリック
chrome.FindElementByXPath("/html/body/div[7]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[1]/div[2]/form/div[1]/div/div[15]/div[1]/div[1]/div[2]/div/ul/li[3]").Click
'送信ボタンをクリック
chrome.FindElementByXPath("/html/body/div[8]/div[9]/div[2]/div[1]/div/div/div[1]/div[2]/div[2]/div/button[2]").Click
End Sub
'---------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------
課題に感じていること、特に教えていただきたい点
①ログイン画面で、メールアドレスとパスワードを入力した後すぐに消えてしまう
②依頼者の入力欄で単に文字列を入力するだけだと、最後に送信ボタンを押下した際にエラーになる。
入力欄で検索し、検索ヒットしたのを選択する必要があると思われるが、それがうまくいかない
③選択式の入力欄すべてにおいて、SelectItemInSelectBoxByTextは使用できず、.Clickを使ってもうまくいかない。
④「詳細を入力」の欄で、Excelのセルの値からコピペで入力させたいが、
.SetTextContentを使用すると改行が全て無視されてしまう。.SetTextだと入力自体できない。
※Excelの一つのセルに、以下のように3行の文字列が入力されているとして、
そのセルを参照して「詳細を入力」の欄に入力させたい。
請求伝票 1699999999
登録日 2023/10/01
金額¥9,500