Я нахожусь в веб-проекте, но URL содержит AngularJS, с которым я не знаком. У меня проблемы с доступом к HTML-элементам, которые, вероятно, были созданы на основе AngularJS, и в данный момент активна функция «handicapOption».
Интернет, для целей тестирования, я тренируюсь на этом
URL
URL-адрес может быть недоступен, когда люди увидят этот вопрос, поэтому здесь есть ссылка, где можно найти доступные расы.
https://www.tvg.com/races
А вот соответствующая часть HTML
<div class="group">
<h2 class="runners-table-title">Race Card</h2>
<div class="handicapOption" qa-label="handicapOption">
<h3>Handicapping
<!----><span ng-if="$root.activeFeatures.tooltipHandicapping" tooltip-placement="bottom" uib-tooltip-template="selectedHandicaping.helpTemplateUrl"><i class="tvg-icon-help"></i></span>
<!---->
</h3>
<ul>
<!---->
<li ng-repeat="option in handicapingOptions"><a class="active" href="" ng-class="{'active': selectedHandicaping === option}" qa-label="handicapOptionValue" ng-click="selectHandicapping(option)">Summary</a></li>
<!---->
<li ng-repeat="option in handicapingOptions"><a href="" ng-class="{'active': selectedHandicaping === option}" qa-label="handicapOptionValue" ng-click="selectHandicapping(option)">Snapshot</a></li>
<!---->
<li ng-repeat="option in handicapingOptions"><a href="" ng-class="{'active': selectedHandicaping === option}" qa-label="handicapOptionValue" ng-click="selectHandicapping(option)">Speed & Class</a></li>
<!---->
<li ng-repeat="option in handicapingOptions"><a href="" ng-class="{'active': selectedHandicaping === option}" qa-label="handicapOptionValue" ng-click="selectHandicapping(option)">Pace</a></li>
<!---->
<li ng-repeat="option in handicapingOptions"><a href="" ng-class="{'active': selectedHandicaping === option}" qa-label="handicapOptionValue" ng-click="selectHandicapping(option)">Jockey/Trainer Stats</a></li>
<!---->
</ul>
</div>
</div>
В основном, когда я нажимаю Элемент-B (Снимок) -> второй элемент <li>
, и Элемент-A (Сводка), и Элемент-B меняют свое имя, как показано ниже
<li ng-repeat="option in handicapingOptions"><a href="" ng-class="{'active': selectedHandicaping === option}" qa-label="handicapOptionValue" ng-click="selectHandicapping(option)">Summary</a></li>
<li ng-repeat="option in handicapingOptions"><a class="active" href="" ng-class="{'active': selectedHandicaping === option}" qa-label="handicapOptionValue" ng-click="selectHandicapping(option)">Snapshot</a></li>
и затем отображается другая таблица.
Это то, что я пытался смоделировать с помощью VBA. К сожалению, элемент таблицы не обновляется. И я предполагал, что эта функция называется
"SelectHandicapping (опция)"
Кто-нибудь может научить меня, как? Постскриптум Я понятия не имею, как указать значение параметра аргумента или какие данные есть в параметре аргумента.
Так что я всю эту неделю копался и гуглял по этому поводу и, наконец, решил плюнуть на вопрос. Я пытался вызвать ".Click" и запустить событие "onChange", но безрезультатно. Не удалось загрузить таблицу содержимого снимка с помощью кода
А вот мой код VBA
Public Sub LoadHorses()
Dim v As Variant
Dim ie As InternetExplorer
Set ie = Core.API_.Explorer
ie.Navigate oRaceTrack.RaceUrl & "?race=" & RaceNumber
Do While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE
Application.StatusBar = "Requesting " & Title & " Horse Data"
DoEvents
Loop
Dim oHTMLDoc As HTMLDocument
Set oHTMLDoc = ie.Document
Do While Not oHTMLDoc.ReadyState = "complete"
Application.StatusBar = "Loading " & Title & " data, please wait"
DoEvents
Loop
Dim handicapOption As Object
Dim currentWindow As HTMLWindowProxy
Set currentWindow = oHTMLDoc.parentWindow
Dim oTbl As HTMLTable
For Each handicapOption In oHTMLDoc.getElementsByTagName("li")
If handicapOption.innerText = "Summary" Then
'I was able to extract data from Summary tab because this is the default tab that is active
handicapOption.Click
handicapOption.Focus
Set oTbl = oHTMLDoc.getElementsByClassName("table race-handicapping-results")(0)
Dim oRow As HTMLTableRow
Dim i As Integer
For i = 1 To oTbl.Rows.Length - 1
Set oRow = oTbl.Rows(i)
If oRow.className = "program-page-runner runner" Then
Dim h As Horse
Set h = New Horse
h.HorseNumber = oRow.Cells(0).innerText
h.HorseName = SplitGetPart(Replace(Trim(oRow.Cells(2).innerText), Chr(13), ""), 2, Chr(10))
h.DaysOff = 0
h.PowerRating = 0
oRaceHorses.Add h
End If
Next i
ElseIf handicapOption.innerText = "Snapshot" Then
handicapOption.Click 'Does not work
handicapOption.Focus 'Does not work
handicapOption.fireevent "onChange" 'Does not work
handicapOption.fireevent "onClick" 'Does not work
'handicapOption.setActive => causes error
'oHTMLDoc.parentWindow.execScript "selectHandicapping(option)" 'Causes error
Set oTbl = oHTMLDoc.getElementsByClassName("table race-handicapping-results")(0)
'<-Extract Snapshot Table
'->
End If
Next handicapOption
End Sub