2013-09-26 1 views
0

HTML:Visual Basic: Установить атрибут веб-элемента whitout ID

<input type="text" size="15" maxlength="79" value="" name="username"> 

Как вы можете видеть, нет ID. HTML выше - это текстовое поле, которое я хочу автоматически заполнить с помощью моего значения, как только я запустил веб-страницу с моим кодом.

это то, что я нашел:

WebBrowser1.Document.Forms(0).GetElementsByTagName("username")(0).SetAttribute("value", (Text)) 

Но капелька это я получаю сообщение об ошибке:

Value of '0' is not valid for 'index'. 'index' should be between 0 and -1. 
Parameter name: index 

Что я делаю не так?

+0

Попробуйте удалить (0) после того, как "имя пользователя". Ваши теги для этого вопроса должны включать javascript, по крайней мере. Кроме того, это WITH, а не whit. – user652411

+0

@ user652411: Я не думаю, что это использует JavaScript. Похоже, что «WebBrowser1» - это объект VB, в котором есть члены, имитирующие JavaScript. – David

ответ

1

Это не собирается найти какие-либо элементы:

WebBrowser1.Document.Forms(0).GetElementsByTagName("username") 

«Имя тега» не означает, что значение атрибута name, это означает, что имя самого HTML-тега. Как это:

WebBrowser1.Document.Forms(0).GetElementsByTagName("input") 

Конечно, это, вероятно, возвращать несколько соответствующие элементы, так что вам нужно, чтобы в дальнейшем определить, какие из них вы хотите изменить. Суть в том, что вы должны сделать проверку некоторых ошибок, чтобы убедиться, что он находит что-нибудь, потому что попытка индексировать пустую коллекцию приведет к ошибке:

WebBrowser1.Document.Forms(0).GetElementsByTagName("username")(0) 

Поскольку коллекция не имеет элементов, нет ничего по индексу 0.

+0

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

+0

@ user2819294: Я не говорю об этом вообще. Я говорю, что для получения элементов по имени тега вы должны указать имя тега ('input'), а не значение атрибута' name'. Затем вы вернете коллекцию всех элементов этого имени тега, и в этой коллекции вы найдете тот, который вы ищете, и установите атрибут, который вы пытаетесь установить. – David

+0

Я действительно не могу понять это, возможно, вы можете привести мне пример. Не могли бы вы случайно заполнить поле «email» на facebook.com без использования значения ID? –

0

Может у может попробовать

Me.WebBrowser1.Document.GetElementByName("username").SetAttribute("Value", txtUsername.Text)