Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447

Нажать ссылку span class в WebBrowser

13.10.2016, 12:59. Показов 2958. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В браузере нужно нажать на ссылку IP:
HTML5
1
2
3
<span class="link link_pseudo_yes input__sample settings__main-ip-sample i-bem" onclick="return {"link":{}}" role="button" tabindex="0">
<span class="link__inner">71.195.68.127</span>
</span>
Пробовал нажимать:
VB.NET
1
SendKeys.Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{SPACE}")
Где TAB срабатывают при переходе по элементам в браузере, а клавиша пробел не срабатывает. Вручную если жму пробел, то срабатывает, а в коде нет.

Пробовал код ниже, тоже не пошло:
VB.NET
1
2
3
4
5
For Each Element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("span")
If Element.GetAttribute("class") = "link__inner"
            Element.InvokeMember("click")
        End If
Next
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.10.2016, 12:59
Ответы с готовыми решениями:

Как нажать на ссылку через WebBrowser
Привет. Долго уже мучаюсь. Есть кнопка-ссылка-javascript (выбрать нужное), мне нужно нажать ее програмно через WebBrowser: &lt;a...

Как определить class у <span class="A1">element</span>, по которому кликнул
Здравствуйте! Имеется текст. Некоторые слова в этом тексте включены в конструкцию &lt;span class=&quot;A1&quot;&gt;element&lt;/span&gt;....

Как программно нажать на Ajax ссылку через WebBrowser
Знакомый попросил сделать &quot;накручивалку&quot; рейтинга на оодном сайте. Начал писать, но уже 4 часа не могу разобраться, как кликнуть на ссылку...

10
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
13.10.2016, 13:25
Цитата Сообщение от Egor2014 Посмотреть сообщение
If Element.GetAttribute("class") = "link__inner"
Попробуй в этом месте в качестве имени атрибута вместо class использовать className
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
13.10.2016, 13:54  [ТС]
diadiavova, отлично работает.
Только когда в код свой ставлю, совместно с ним не работает:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        '   На страницу XML Яндекса
        WebBrowser1.Navigate("https://xml.yandex.ru/settings/")
        '   Ожидание загрузки
        Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
            System.Windows.Forms.Application.DoEvents()
        Loop
        '   Вводим логин пароль
        Try
            WebBrowser1.Document.GetElementById("login").InnerText = "login@yandex.ru"
            SendKeys.Send("{TAB}" + "password" + "{TAB}{ENTER}")
        Catch ex As Exception
 
        End Try
 
        '   Жмем кнопку IP
        For Each Element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("span")
            If Element.GetAttribute("className") = "link__inner" Then
                Element.InvokeMember("click")
            End If
        Next
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
13.10.2016, 14:09
Цитата Сообщение от Egor2014 Посмотреть сообщение
VB.NET
1
2
WebBrowser1.Document.GetElementById("login").InnerText = "login@yandex.ru" 
SendKeys.Send("{TAB}" + "password" + "{TAB}{ENTER}")
Вот этого я вообще не понял. Откуда этот код и почему он такой? По-моему это должно выглядеть как-то так
VB.NET
1
2
WebBrowser1.Document.GetElementById("login").SetAttribute("value", login)
WebBrowser1.Document.GetElementById("passwd").SetAttribute("value", password)
1
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
13.10.2016, 15:54  [ТС]
diadiavova, заменил на ваш код, он лучше. Только вот ссылка не нажимается span class.
Попробовал её нажать в потоке с задержкой System.Threading.Thread.Sleep(5000) так мне несколько окон выпало: "Сертификат безопасности для этого сайта был отозван". Может быть это сообщение мешает нажать ссылку?

Добавлено через 13 минут
И что делать... может на Awesomium сделать?
0
 Аватар для Sklifosofsky
1085 / 915 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
13.10.2016, 16:18
Попробуйте включить игнорирование ошибок сценария
VB.NET
1
WebBrowser.ScriptErrorsSuppressed = True
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
13.10.2016, 16:20  [ТС]
Sklifosofsky, Вначале процедуры уже стояло
0
 Аватар для Sklifosofsky
1085 / 915 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
13.10.2016, 16:38
Ну тогда искать костыли...
Вот что у буржуев нарыл http://www.codeproject.com/Art... ol-Dialogs
Код сам не смотрел
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
14.10.2016, 18:11  [ТС]
Вопрос остается открытым. Всплывают окна при входе на страницу.
Нашел про Error на MSDN, но под себя не смог переделать, вот ссылка: https://msdn.microsoft.com/ru-... .110).aspx

Код из MSDN:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
' Hides script errors without hiding other dialog boxes.
Private Sub SuppressScriptErrorsOnly(ByVal browser As WebBrowser)
 
    ' Ensure that ScriptErrorsSuppressed is set to false.
    browser.ScriptErrorsSuppressed = False
 
    ' Handle DocumentCompleted to gain access to the Document object.
    AddHandler browser.DocumentCompleted, _
        AddressOf browser_DocumentCompleted
 
End Sub
 
Private Sub browser_DocumentCompleted(ByVal sender As Object, _
ByVal e As WebBrowserDocumentCompletedEventArgs)
 
    AddHandler CType(sender, WebBrowser).Document.Window.Error, _
        AddressOf Window_Error
 
End Sub
 
Private Sub Window_Error(ByVal sender As Object, _
    ByVal e As HtmlElementErrorEventArgs)
 
    ' Ignore the error and suppress the error dialog box. 
    e.Handled = True
 
End Sub
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
18.10.2016, 19:43  [ТС]
Как сделать, чтоб код ниже срабатывал лишь один раз, а пока кнопки нажимаются много раз. Вводил условие для переменной sikl = 0, тогда кнопки вообще не нажимаются.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        '------------------------------------------------------   
        '   Нажимаем кнопки
        '------------------------------------------------------
        '  If sikl = 0 Then
        For Each Element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("span")
 
                '   Нажать на ссылку IP
                If Element.GetAttribute("className") = "link__inner" Then
                    Element.InvokeMember("click")
                End If
 
                '   Нажать кнопку сохранить 
                If Element.GetAttribute("className") = "button__text" Then
                    Element.InvokeMember("click")
                End If
            Next
            sikl = 1
        ' End If
    End Sub
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
19.10.2016, 10:34
Цитата Сообщение от Egor2014 Посмотреть сообщение
Как сделать, чтоб код ниже срабатывал лишь один раз
Проверяй ReadyState браузера, и выполняй код на Completed. Если в документе есть фрейме, то метод будет вызываться для каждого, так что в этом случае надо проверять не только редистэйт, но и адрес страницы, вызвавшей событие.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2016, 10:34
Помогаю со студенческими работами здесь

Нажать на элемент <span>
Как програмно нажать на &lt;span&gt;нажми меня&lt;/span&gt; в webbrowser'е?

Программно нажать на span
Приветствую. Создавал тему, но похоже, что вопрос более касается jquery а не php. подскажите, можно ли что то сделать в данной ситуации?

span class в php
Всё перепробывал не могу прописать правильно класс для переменной вот строка , для переменной $prognoz нужно задать span class ...

Не получается поместить span class внутри echo
Зддравствуйте. Помогите пожалуйста, в php не силен. Мне надо внутри echo разместить span class, но что-то не выходит:( Вот код &lt;?php...

При клике на ссылку в WebBrowser открыть ссылку в браузере по умолчанию
Собственно тема. Можно ли как-то такое осуществить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru