Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Webbrowser (get element by class name), авторизация  
:(
    Опции темы
CaptainNemo
Дата 16.8.2011, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

Репутация: нет
Всего: 9



Добрый вечер. 
Нашел много примеров как программно авторизоваться через WebBrowser, все предельно ясно. Но вот один нюанс: кнопка Submit на сайте, на котором мне нужно программно залогиниться не имеет атрибута name. Только class и type

Код

<form method="post" name="forma3">
<label>Логин:</label>
<input class="email_input" name="login" type="text">
<br>
<label>Пароль:</label>
<input class="email_input" name="passwd" type="password">
<br>
  <label>&nbsp;</label>
  <input value="Продолжить" class="submit" type="submit"><br>
</form>



Заполнить форму получается так:
Код

    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
        Dim var As String
        login = "МойЛогин" : passwd = "МойПассворд"

        www = WebBrowser1
        www.Document.GetElementById("login").SetAttribute("value", login)
        www.Document.GetElementById("passwd").SetAttribute("value", passwd)
    End Sub


Вопрос: можно ли использовать атрибуты class или type кнопки, что бы затем применить InvokeMember("click"). Если нет, то как без SendKeys програмно авторизоваться? 

Спасибо 


PM MAIL WWW ICQ Skype GTalk   Вверх
diadiavova
Дата 16.8.2011, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(CaptainNemo @  16.8.2011,  02:09 Найти цитируемый пост)
 можно ли использовать атрибуты class или type кнопки, что бы затем применить InvokeMember("click")

Можно вызвать метод submit самой формы, зачем мучиться-то?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
CaptainNemo
Дата 16.8.2011, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

Репутация: нет
Всего: 9



diadiavova, 

Цитата

Можно вызвать метод submit самой формы, зачем мучиться-то? 


Вот, пробую так, не получается:
Код

www.Document.Forms(0).DomElement.submit.click()

PM MAIL WWW ICQ Skype GTalk   Вверх
diadiavova
Дата 16.8.2011, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(CaptainNemo @  16.8.2011,  10:32 Найти цитируемый пост)
.click()

Это лишнее

Добавлено через 1 минуту и 12 секунд
Метод submit отправляет форму на сервер, а не возвращает ссылку на кноку сабмит


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
CaptainNemo
Дата 16.8.2011, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

Репутация: нет
Всего: 9



diadiavova, Да, действительно, заработало. Благодарю. С этим сайтом разобрался. 

Скажите, а если на стороне клиента просматриваются лишь поля ввода:
Код

<input id="a1" name="A" size="20" maxlength="10">
<input id="a2" name="B" size="20" maxlength="10">


Причем просматриваются не через "Исходный код страницы" (там только ссылки на скрипты), а атрибуты элементов формы получается просмотреть лишь с помощью специальных инструментов (типа Web Developer Toolbar для Firefox). 

Атрибутов кнопки вообще не видно, даже тэгов. 
Кроме того, не получается выполнить инструкцию типа:
Код

www.Document.GetElementById("А").SetAttribute("value", passwd)


(если я правильно понимаю, работает скрипт, блокирующий выполнение внешних скриптов)

То можно как-либо залогиниться на таком вот защищенном сайте? 
PM MAIL WWW ICQ Skype GTalk   Вверх
diadiavova
Дата 16.8.2011, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(CaptainNemo @  16.8.2011,  11:28 Найти цитируемый пост)
если я правильно понимаю, работает скрипт, блокирующий выполнение внешних скриптов

Не думаю. Если я правильно понял проблему, то, возможно, хтмл-контент генерируется скриптом во время загрузки, кроме того, его содержимое может подгружаться динамически, с помощью аякса. Но вообще смотреть надо что там, на самом деле не важно, как был создан контент, он все равно должен работать одинаково когда загружен в браузер. Атрибуты могут не просматриваться, если они не определены в документе, при этом специальные инструменты будут выдавать значение по умолчанию для этих атрибутов. В принципе у узла атрибута есть свойство specified, которое указывает, определен атрибут в документе или нет.
Что касается невозможности установить значение, то тут все зависит от того, что за элемент. К значению элемента input.password насколько я помню нет доступа по соображениям безопасности, так что вряд ли это особенность какого-то конкретного сайта.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0703 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.