IE→Edge(IEモード)切替における、自作スクリプトの編集方法について
WinActor:Ver7.3.1
ライセンス:ノードロック管理者版
IE→Edge(IEモード)対応を進めていく中で、IEで動作していた自作(ネット上から拾ったものがベース)のスクリプトについて、
Edge(IEモード)での動作ができず困っています。
スクリプトの目的:サイト上の「Tag=OPTION」の「指定INNERTEXT」の項目を選択する
実施内容:WALibraryCheckerによるシナリオ全体の対応
WALibraryChecker付属のドキュメント「WALibraryChecker_Operation_Manual」の内容に基づいたスクリプト内容の変更
Edgeバージョンに対応したwebdriverの差し替え
●スクリプト内容(修正前)
※インデントがコピペ時反映できなかったためスペースを入れております。
※項目名(8桁)を与えて動作させています
ieTitle = GetUMSWindowTitle(@ウィンドウ識別名@)
ieHWnd = GetUMSWindowHandle(@ウィンドウ識別名@)
' 引数を解釈する
frameNum = !frame index! + 0
selectNum = !tag index! + 0
If IsNull(ieTitle) Then
'指定されたウィンドウ識別ルールに該当するウィンドウが存在しません。
WScript.Quit
End If
' タイトルの接尾辞を取り除く
ieTitle = Left(ieTitle, InStrRev(ieTitle, " - ") - 1)
' 指定されたページのdocumentを取得する
Set document = Nothing
Set shell = CreateObject("Shell.Application")
For i = 0 To shell.Windows.Count - 1
Set window = shell.Windows(i)
title = Empty
On Error Resume Next
title = window.document.title
On Error Goto 0
If title <> Empty Then
If InStr(title, ieTitle) <> 0 Then
Set document = window.document
Exit For
End If
End If
Next
If document Is Nothing Then
'指定されたタイトルのページが開かれていません。
WScript.Quit
End If
' document内の指定された番号のframeオブジェクトを取得する
On Error Resume Next
Set document = FindFrame(document)
On Error Goto 0
If document Is Nothing Then
'指定された番号のフレームが存在しません。
WScript.Quit
End If
' document内の指定された番号の選択リストを取得する
Set select1 = Nothing
On Error Resume Next
Set select1 = (document.document.getElementsByTagName("select"))(selectNum)
On Error Goto 0
If select1 Is Nothing Then
'指定された番号の選択リストは存在しません。
WScript.Quit
End If
' 選択リスト内の指定された項目を取得する
Set item = Nothing
On Error Resume Next
' 選択リスト項目をインデックスで指定する場合
' Set item = (select1.getElementsByTagName("option"))(!項目番号!)
' 選択リスト項目を文字列で指定する場合
For Each opt In select1.getElementsByTagName("option")
If Left(opt.innerText,8) = !項目名! Then
Set item = opt
Exit For
End If
Next
On Error Goto 0
If item Is Nothing Then
'指定された選択リスト項目は存在しません。
WScript.Quit
End If
' 対象の選択リスト項目を選択する
item.Selected = True
'---------------------------------------------------------------
' フレーム0を探索する
Function FindFrame(rootDoc)
If frameNum = 0 Then
Set FindFrame = rootDoc.frames
Exit Function
End If
frameNum = frameNum - 1
Dim i
For i = 0 To (rootDoc.frames.Length - 1)
Set frms = rootDoc.frames
Set frm = frms(i)
Set FindFrame = FindFrame2(frm)
If Not FindFrame Is Nothing Then
Exit Function
End If
Next
Set FindFrame = Nothing
End Function
'---------------------------------------------------------------
' 子フレームを探索する
Function FindFrame2(rootFrame)
If frameNum = 0 Then
Set FindFrame2 = rootFrame
Exit Function
End If
frameNum = frameNum - 1
Set frms2 = rootFrame.document.frames
Dim j
For j = 0 To (rootFrame.document.frames.Length - 1)
Set frm2 = frms2(j)
'Set FindFrame2 = FindFrame2(rootFrame.document.frames(j)) 'NG
Set FindFrame2 = FindFrame2(frm2)
If Not FindFrame2 Is Nothing Then
Exit Function
End If
Next
Set FindFrame2 = Nothing
End Function
●スクリプト内容(修正後、部分のみ)
' 指定されたページのdocumentを取得する
Set document = Nothing
Set shell = CreateObject("WinActor7.ScriptHelper")
Set windows = shell.Windows
For i = 0 To windows.Count - 1
Set window = windows(i)
title = Empty
On Error Resume Next
title = window.document.title
On Error Goto 0
If title <> Empty Then
If InStr(title, ieTitle) <> 0 Then
Set document = window.document
Exit For
End If
End If
Next
以上です。
よろしくお願いいたします。