Selenium vba не может найти элемент с помощью идентификатора

#excel #vba #selenium #web-scraping #selenium-chromedriver

Вопрос:

Я пытаюсь использовать VBA и selenium, чтобы найти элемент по его идентификатору. Несмотря на наличие правильного идентификатора элемента и правильного кода, когда я запускаю свой код, он всегда говорит, что не может найти идентификатор элемента.

Это мой код, который я использую, чтобы открыть веб-сайт, а затем выполнить поиск элемента.


 MyBrowser.Start baseUrl:="https://cibc.service-now.com/change_request.do?sysparm_query=^GOTOnumber=" amp; sTicket   MyBrowser.Get "/"  Set SearchInput = MyBrowser.FindElementById("sys_readonly.change_request.start_date")***  

и это html-код элемента, который я пытаюсь найти на странице

 "input style=";;" class="form-control disabled" id="sys_readonly.change_request.start_date" value="2021-10-14 00:00:01" readonly="readonly" aria-label="Planned Start Date"  

Если кто-нибудь может помочь с тем, как я могу получить значение этого элемента, я был бы очень признателен.

Комментарии:

1.Пожалуйста, проверьте в dev tools (Google chrome), есть ли у нас уникальная запись HTML DOM или нет. Шаги для проверки: Press F12 in Chrome -gt; перейдите в gt; element раздел -gt; выполните gt; CTRL F -gt; затем вставьте gt; id и посмотрите, element выделяется ли ваш желаемый 1/1 соответствующий узел.

2. @cruisepandey , Да, я проверил, и это уникально. для этого есть еще одно совпадение, но оно выглядит так, что я не думаю, что это повлияет на него. lt;label for=»sys_readonly.change_request.start_date» class=»url col-xs-12 col-md-1_5 col-lg-2 control-label» dir=»ltr» style=»width: 100%; text-align: left;»gt;lt;span id=»status.change_request.start_date» aria-label=»Read only — cannot be modified» data-dynamic-title=»Click to View Maintenance Calendar» mandatory=»false» oclass=»read_only» class=»read_only «gt;lt;/spangt;….

3. Элемент может скрываться за iframe, проверьте html, если он есть. Если веб-сайт общедоступен, пожалуйста, укажите действительный URL-адрес, чтобы мы могли его протестировать.

4. @Raymond Wu, он не скрыт за iframe, и страница закрыта, поэтому я не могу поделиться ссылкой.

5. @Ayman В таком случае, поскольку вы используете Selenium, а это также означает, что браузеру нужно время для загрузки контента, вы пытались задержаться на несколько секунд (или сколько бы времени это ни заняло) раньше FindElementById ? Установите точку останова в этой строке и сделайте браузер видимым, когда код остановится, дождитесь визуального отображения этого элемента, а затем запустите строку.