Какой правильный идентификатор элемента для этого кода VBA? - PullRequest
0 голосов
/ 23 октября 2019

Я получил приведенный ниже код VBA с этого сайта. Код автоматически откроет сайт в IE (будет использовать другой URL), а также импортирует файлы. Когда я запустил этот код, он не работал из-за неправильных elementsTagName и, возможно, InputType. Какие должны быть правильные коды? Я не уверена. Вторая часть HTML-коды.

Пожалуйста, помогите проверить коды.

Sub File_Test()
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLButtons As MSHTML.IHTMLElementCollection
Dim HTMLButton As MSHTML.IHTMLElement
Dim btnInput As MSHTML.IHTMLInputElement 
Dim ie As Object 
Dim pointer As Integer 
Set ie = CreateObject("internetexplorer.application") 
ie.Visible = True 
ie.navigate "http://www.htmlquick.com/reference/tags/input-file.html" 
Do While ie.readyState <> READYSTATE_COMPLETE 
Loop 
Set HTMLDoc = ie.document 
Set HTMLButtons = HTMLDoc.getElementsByTagName("Upload Files") 
For Each HTMLButton In HTMLButtons 
    For Each btnInput In HTMLButtons 
        If btnInput.Type = "button" Then 
             HTMLButton.Click btnInput.Value = "C:\temp\test.txt" 
             pointer = 1 
             Exit For 
        End If 
     Next 
     btnInput 
     If pointer = 1 Then Exit For 
  Next 
End sub


    <button title="Upload Files" class="button button--white xc-action-nav__button ng-binding ng-scope" type="button" loading-key="0" ng-click="setLoading('group1', '0'); " ng-disabled="isLoading('group1', null)"><span class="spinner-transition" ng-class="{'spinner spinner--is-loading': isLoading('group1', '0')}"></span> Upload Files</button>

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Я проверил, но он не работает. Я получил Runtime Error '-2147417848 (80010108). ОБЪЯВЛЕННЫЙ ОБЪЕКТ ОТКЛЮЧЕН ОТ ЕГО КЛИЕНТА после того, как я нажал F8 в строке «Цикл». Ниже приведен новый код в соответствии с вашим предложением. Что вызывает эту проблему? Извинения, если я размещаю свой комментарий здесь как простой Добавить комментарий, не позволяет мне добавлять коды. Спасибо за ваше время!

Private Sub CommandButton21_Click() Dim ie As Object Dim uploads As Object, i As Long Set ie = CreateObject("internetexplorer.application") ie.Visible = True ie.navigate "http://www.htmlquick.com/reference/tags/input-file.html" Do While ie.readyState <> 4 Loop Set uploads = ie.document.querySelectorAll("#examples [type=file]") For i = 0 To uploads.Length - 1 uploads.Item(i).Click'other code Next End Sub

0 голосов
/ 24 октября 2019

Некоторые указатели:

Этот HTMLButton.Click btnInput.Value = "C:\temp\test.txt" должен быть в двух отдельных строках.

HTMLButton.Click 
btnInput.Value = "C:\temp\test.txt"

Я думаю, что вторая строка избыточна. В вашем коде отсутствуют более сложные инструкции, необходимые для взаимодействия с диалоговым окном файла для ввода пути к файлу. Тема для совсем другого вопроса, который был рассмотрен в SO.

«Кнопки» являются элементами тега ввода, и вам нужно ограничиться тремя соответствующими.

Dim uploads As Object, i As Long

Set uploads = ie.document.querySelectorAll("#examples [type=file]")

For i = 0 To uploads.Length-1
    uploads.item(i).click
    'other code
Next

Мой советбудет пытаться кодировать с реальным URL и делиться проблемами, которые у вас возникают с реальным сценарием. Код выше, IMO, не подходит для цели для данного URL.

...