Введите текст в поле поиска на веб-странице и нажмите Поиск - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь ввести данные из книги Excel в поле поиска веб-страниц и нажать кнопку поиска. Много разных подходов было проверено с успехом. Текущее решение дает 424 Ошибка, требуется объект. Указывая на:

.Document.getElementById("crmGrid_findCriteria").Value = _
      Sheets("Other data").Range("A2").Value

HTML для поля поиска:

<input id="crmGrid_findCriteria" title="Search for records" hintlabelid="crmGrid_findHintText" type="text" class="ms-crm-Dialog-Lookup-QuickFind" maxlength="100" tabindex="0" value="">

HTML для кнопки поиска:

<img id="crmGrid_findCriteriaImg" src="/_imgs/imagestrips/transparent_spacer.gif" class="ms-crm-ImageStrip-search " imgbase="/_imgs/search" title="Start search" alt="Start search">

Вот структура:

enter image description here

Вот мой VBA (ссылка на систему CRM, поэтому она не является общедоступной):

Sub GoToOpport()

    'This will load a webpage in IE
    Dim ieappIE As InternetExplorerObject
    Dim HWNDSrc As Long
    Dim elementsSet AsappIE Object= CreateObject("internetexplorer.application")

    Set ie = Nothing With appIE
    Set ie = New InternetExplorerMedium      
    ie.Visible = True

    ie.Navigate "https://crm.dynamics.com/main.aspx?area=nav_oppts&etc=3&page=SFA&pageType=EntityList&web=true"

    With ie

    Do
    DoEvents
    Loop Until ie.ReadyState = READYSTATE_COMPLETE   
    End With

ie.Document.getElementById("contentIFrame0").contentDocument.getElementById("crmGrid_findCriteria").Value = "hello"

    'Unload IE
    Set ieappIE = Nothing
End Sub

Ошибка:

enter image description here

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Это в iframe, поэтому вам нужно получить доступ к этому

ie.document.getElementById("contentIFrame0").contentDocument.getElementById("crmGrid_findCriteria")

Вы можете использовать js, чтобы попытаться присвоить значение

ie.document.parentWindow.execScript "document.getElementById('contentIFrame0').document.getElementById('scrmGrid_findCriteria').value = 'hello';" 

Вы также можете попробовать перейти кисточник iframe

ie.navigate2 ie.document.querySelector("#crmContentPanel").src
 While ie.Busy Or ie.readyState < 4: DoEvents: Wend 
With ie.document.getElementById("crmGrid_findCriteria")
    .focus
    .value = "abc"
End With
0 голосов
/ 23 апреля 2019

Я получаю статус 301 Moved Permanently, когда отправляю запрос GET, а затем меня перенаправляют сюда:

https://dynamics.microsoft.com/en-us/crm/what-is-crm/

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * В ответе HTML нигде нет ни слова, так что я думаю, что если вы попытаетесь:

debug.print ie.Document.getElementById("crmGrid_findCriteria") Is Nothing

в результате вы получите TRUE.

Другими словами, искомый элемент не существует в загруженном вами HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...