Как получить innerHTML с помощью Selenium VBA - PullRequest
2 голосов
/ 06 ноября 2019

Я пытаюсь захватить innerHTML, если при выполнении задачи в chrome появляется всплывающее окно, а затем на основе innerHTML либо щелкните «ОК» и сохраните, либо выйдите. Проблема, с которой я сталкиваюсь, заключается в том, что перед возможным всплывающим окном я нахожусь в iframe и мне нужно переключиться обратно на основной корпус. Я использую селен:

main body (possible pop_up *i think*)
   iframe (I am here)

Ниже приведен некоторый код, который я вычеркнул, вычеркнув ненужные строки:

Dim sel As Selenium.ChromeDriver
Dim pop as Object    

Set sel = New Selenium.ChromeDriver

sel.Get URL
' Switch to iframe
Set iframe = sel.FindElementByTag("iframe", 10000)
sel.SwitchToFrame iframe, 5000

code...

' Where the popups sometimes show up
On Error Resume Next
sel.SwitchToDefaultContent
Set pop = sel.FindElementsByClass("popupText", 2000) *Error Could not locate class=popupText
On error goto 0

Я получаю эту ошибку, если я выключаюошибка возобновить, даже если есть всплывающие окна. Ниже приведен HTML-код:

<span class="popupText">
  <br />
  *Text* 
  <br />
  <br />
  *Text*
</span>

Я пробовал несколько других вещей: не использовать switchtodefaultcontent и использовать switchtoparenframe, и, похоже, ничего не работает.

Существует также функция .SwitchToAlert. в селене, который также не работает ...

strAlert = sel.SwitchToAlert.Text 'Get nothing
sel.SwitchToAlert.Accept          'Does not do anything

1 Ответ

0 голосов
/ 08 ноября 2019

Обошел эту проблему, похоже, что есть проблема с надстройкой Selen VBA. Обходной путь:

sel.SwitchToDefaultContent
inner_text = Right(sel.PageSource, 1000)

Вместо этого я перехватил источник страницы после переключения на содержимое по умолчанию (всплывающий текст оказался в самом конце html). Затем я продолжаю проверять, есть ли всплывающее окно (4 различных параметра pop_up) находится в переменной inner_text. Затем продолжите оттуда.

Причина, по которой я считаю, что это проблема с надстройкой VBA Selenium, заключается в том, что я скопировал приведенный выше код на Python, и он отлично работал ... поэтому не уверен, что там происходит. VBA Selenium датируется около 4 лет.

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