0

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

以上です。

よろしくお願いいたします。

しゅ 回答した質問
回答とコメントは、会員登録(無料)で閲覧できるようになります。