Arnav Varshney Ответов: 1

Ошибка: ссылка на объект не установлена на экземпляр объекта при автоматическом вводе текста


Я пытаюсь автоматически ввести поле с id = "qpemail". Тем не менее, когда я выполняю этот код, я сталкиваюсь со следующей ошибкой:
System.NullReferenceException: 'Object reference not set to an instance of an object.'

If SBIPlatinum = True Then            PayBillsBrowser.Navigate("https://www.billdesk.com/pgidsk/pgijsp/sbicard/SBI_card.jsp")
PayBillsBrowser.Document.GetElementById("qpemail").InnerText = "xyz@gmail.com"
End If


Что я уже пробовал:

Я попытался настроить код так, чтобы:
If SBIPlatinum = True Then            PayBillsBrowser.Navigate("https://www.billdesk.com/pgidsk/pgijsp/sbicard/SBI_card.jsp")
If PayBillsBrowser.IsBusy = False Then
PayBillsBrowser.Document.GetElementById("qpemail").InnerText = "xyz@gmail.com"
End If
End If

но безрезультатно!

Пожалуйста, помогите мне, как я могу удалить ошибку. Заранее спасибо!

Kornfeld Eliyahu Peter

На какой линии у вас есть исключение?
Используйте отладчик Arnav!

Arnav Varshney

Спасибо @Kornfeld Eliyahu Peter

Arnav Varshney

Возможно ли, что я выполняю автоматический ввод на веб-странице .jsp? Я попытался удалить каждую строку и обнаружил, что эта строка кода выдает ошибку:
PayBillsBrowser.Документ.GetElementById ("qpemail").Внутренний текст = "xyz@gmail.com"

Kornfeld Eliyahu Peter

Так что, вероятно, это null: PayBillsBrowser.Документ.Метода getElementById("qpemail")

Arnav Varshney

Я отлаживал с помощью этого кода:
Если PayBillsBrowser.Документ Ничего Не Значит
Dim element = PayBillsBrowser.Документ.GetElementById ("CCardNum1")
Если элемент не есть ничто тогда
MsgBox(element. innerHTML)
Конец, Если
Ещё
MsgBox ("Null")
Конец, Если
И я заключаю, что PayBillsBrowser.Документ является недействительным
Любой обходной путь действительно поможет! Большое спасибо за вашу помощь!

Arnav Varshney

Пожалуйста, ответьте!

1 Ответов

Рейтинг:
6

OriginalGriff

Это одна из самых распространенных проблем, которые нам задают, и это также та, на которую мы меньше всего готовы ответить, но вы больше всего готовы ответить сами.

Позвольте мне просто объяснить, что означает ошибка: вы пытались использовать переменную, свойство или возвращаемое значение метода, но оно содержит null - что означает, что в переменной нет экземпляра класса.
Это немного похоже на карман: у вас есть карман в рубашке, в котором вы держите ручку. Если вы сунете руку в карман и обнаружите, что там нет ручки, вы не сможете подписать свое имя на листе бумаги - и вы получите очень забавный вид, если попытаетесь! Пустой карман дает вам нулевое значение (здесь нет ручки!), поэтому вы не можете сделать ничего такого, что обычно делали бы, когда извлекли свою ручку. Почему он пуст? Вот в чем вопрос - может быть, вы забыли взять ручку, когда уходили из дома сегодня утром, или, возможно, вы оставили ручку в кармане вчерашней рубашки, когда снимали ее вчера вечером.

Мы не можем сказать, потому что нас там не было, и, что еще важнее, мы даже не можем видеть вашу рубашку, не говоря уже о том, что находится в кармане!

Вернемся к компьютерам, и вы каким - то образом сделали то же самое-и мы не можем увидеть ваш код, а тем более запустить его и узнать, что содержит null, когда это не должно быть.
Но вы можете - и Visual Studio поможет вам здесь. Запустите свою программу в отладчике, и когда она выйдет из строя, VS покажет вам строку, на которой она обнаружила проблему. Затем вы можете начать просматривать различные его части, чтобы увидеть, какое значение равно null, и начать просматривать свой код, чтобы выяснить, почему. Поэтому поставьте точку останова в начале метода, содержащего строку ошибки, и снова запустите программу с самого начала. На этот раз VS остановится перед ошибкой и позволит вам изучить, что происходит, пройдя через код, глядя на ваши значения.

Но мы не можем этого сделать - у нас нет вашего кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы сможете узнать!


Arnav Varshney

При отладке я получаю следующую ошибку:
http://i.imgur.com/TAUbmms.jpg

Arnav Varshney

Возможно ли, что я выполняю автоматический ввод на веб-странице .jsp? Я попытался удалить каждую строку и обнаружил, что эта строка кода выдает ошибку:
PayBillsBrowser.Документ.GetElementById ("qpemail").Внутренний текст = "xyz@gmail.com"

Arnav Varshney

Я отлаживал с помощью этого кода:
Если PayBillsBrowser.Документ Ничего Не Значит
Dim element = PayBillsBrowser.Документ.GetElementById ("CCardNum1")
Если элемент не есть ничто тогда
MsgBox(element. innerHTML)
Конец, Если
Ещё
MsgBox ("Null")
Конец, Если
И я заключаю, что PayBillsBrowser.Документ является недействительным
Любой обходной путь действительно поможет! Большое спасибо за вашу помощь!

Arnav Varshney

Пожалуйста, ответьте!

OriginalGriff

Как я могу с пользой ответить, если вы ничего не сделали, чтобы выяснить, почему?
Вы узнали, что такое null - но я все еще не могу получить доступ к вашему коду, чтобы узнать, что это такое или где оно используется, кроме как в одной строке кода, которую вы мне показываете!

Так что начните смотреть на остальную часть кода и выясните, что вы с ним делаете - я не могу сделать это за вас!

Arnav Varshney

Это сам по себе полный код, в отношении браузера и нулевой проблемы!

OriginalGriff

Нет, это не так!
Вернитесь к аналогии с рубашкой: вы определили, что именно shirt.pocket содержит null, когда он должен содержать экземпляр класса Pen.

Но в изоляции это ничего не говорит вам о том, почему пропала ручка. Может быть, его украли? Существовал ли он вообще? Она у тебя на столе? Он в кармане вчерашней рубашки?

Мы не можем сказать, потому что у нас вообще нет доступа к вашему коду - не говоря уже о том, когда он работает, что здесь и нужно, - чтобы посмотреть на все другие места, где вы "используете свою рубашку", чтобы узнать, когда он стал нулевым или когда он должен был быть заполнен экземпляром пера, но не был заполнен.
Ошибка не обязательно находится в строке, которая показывает исключение - она потенциально находится в другом методе, классе, файле или даже сборке!

Arnav Varshney

Может быть, это поможет, если я смогу предоставить вам свой файл формы?

OriginalGriff

Нет, потому что я не могу управлять им в одиночку и при тех же обстоятельствах, что и вы!
Начните с просмотра переменной PayBillsBrowser и точки останова при каждом использовании. Затем запустите свой код и посмотрите, что именно с ним происходит.

Arnav Varshney

Что это в основном делает, так это то, что он переходит на веб-сайт и выполняет автотипирование на поле...