Ошибка «Недостаточно памяти», когда класс div не найден - PullRequest
0 голосов
/ 29 февраля 2020

Я использую Selenium с ChromeDriver

Dim driver As New ChromeDriver

driver.Get "https://somewebsite.com"

val = driver.FindElementByCss(".some-class-that-does-not-exist-on-this-page").Text

Cells(x, 2).Value = val

Когда мой код VBA не может найти этот класс на странице, он выдает ошибку

«недостаточно памяти» 7

, хотя мой диспетчер задач говорит, что моя память только на 29%.

enter image description here

Когда я нажимаю на помощь, это приводит меня к https://docs.microsoft.com/en-us/office/vba/Language/Reference/User-Interface-Help/out-of-memory-error-7

Я попробовал предложенные здесь вещи:

  • Перезагрузите Microsoft Windows в расширенном режиме.
  • Увеличение виртуальной памяти

    enter image description here

Но проблема все еще сохраняется. Это происходит только тогда, когда не удается найти класс div.

Я попытался добавить оператор if, чтобы проверить, существует ли элемент

  If IsObject(driver.FindElementByCss(".some-class-that-does-not-exist-on-this-page")) Then

    val = driver.FindElementByCss(".some-class-that-does-not-exist-on-this-page").Text

    Cells(x, 2).Value = val

  End If

, но все равно приводит к ошибке нехватки памяти.

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Я решил это с помощью обработчика ошибок

On Error GoTo ErrorHandler
    elem = driver.FindElementByCss(".some-class-that-does-not-exist-on-this-page")
    Cells(x, 2).Value = elem.Text
ErrorHandler:
    Cells(x, 2).Value = "HTML element not found"
    Resume Next
0 голосов
/ 29 февраля 2020

удалить часть ".Text". Проверьте, существует ли элемент перед чтением этого значения.

псевдо:

elem = driver.FindElementByCss(".some-class-that-does-not-exist-on-this-page")

if elem is not nothing then
val = elem.Text
// do other stuff
 end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...