Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 21

Awesomium кликнуть по ссылке с текстом

19.07.2017, 14:48. Показов 2762. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Проблема следующая имеется ссылка <a href="video/7385"> Новые дорожные технологии</a>. Так как нет никаких атрибутов кроме как текста и самого адреса ссылки в href. У меня не получается найти её и кликнуть. Можно ли как то перевести код написанный для Webbrouser на Awesomium? У меня что-то не выходит это сделать.


C#
1
2
3
4
5
6
  HtmlElementCollection a_tag = webBrowser1.Document.GetElementsByTagName("a");
            foreach (HtmlElement he in a_tag)
            {
                if (he.InnerHtml == " Новые дорожные технологии")
                    he.InvokeMember("click");
            }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.07.2017, 14:48
Ответы с готовыми решениями:

Awesomium - кликнуть на ссылке
привет есть страничка тегом &lt;a href='link' как вызвать клик на этом элементе ?

Кликнуть по ссылке
Есть код: var button=$('.pagination li.active span').parent().next('li').children('a') ;//кнопка button.click(); //...

Кликнуть по ссылке в WebBrowser
Привет всем! Скажите пожалуйста, у меня есть Webbrowser в ней Links, как кликнит в Links и получить msgbox

13
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
19.07.2017, 15:32
Цитата Сообщение от SWAIPER Посмотреть сообщение
Можно ли как то перевести код написанный для Webbrouser на Awesomium?
В авесомиуме так не получится, там надо выполнять JavaScript в браузере с помощью ExecuteJavaScript. Сам код на JavaScript может быть таким
JavaScript
1
2
            var a = Array.prototype.find.call(document.getElementsByTagName("a"), elt => elt.textContent == " Новые дорожные технологии");
            a.click();
Или можно с использованием XPath
JavaScript
1
2
3
            var iterator = document.evaluate("//a[text() = ' Новые дорожные технологии']", document, null, XPathResult.ANY_TYPE, null);
            var a = iterator.iterateNext();
            a.click();
0
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 21
19.07.2017, 16:42  [ТС]
При попытке использовать ваш код, появились ошибки.
Миниатюры
Awesomium кликнуть по ссылке с текстом   Awesomium кликнуть по ссылке с текстом  
0
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 21
19.07.2017, 16:44  [ТС]
При попытке использовать ваш код, появились ошибки.
Миниатюры
Awesomium кликнуть по ссылке с текстом   Awesomium кликнуть по ссылке с текстом  
0
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 21
19.07.2017, 16:47  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
В авесомиуме так не получится, там надо выполнять JavaScript в браузере с помощью ExecuteJavaScript. Сам код на JavaScript может быть таким
JavaScript
1
2
            var a = Array.prototype.find.call(document.getElementsByTagName("a"), elt => elt.textContent == " Новые дорожные технологии");
            a.click();
Или можно с использованием XPath
JavaScript
1
2
3
            var iterator = document.evaluate("//a[text() = ' Новые дорожные технологии']", document, null, XPathResult.ANY_TYPE, null);
            var a = iterator.iterateNext();
            a.click();
При попытке использовать ваш код, появились ошибки.
Миниатюры
Awesomium кликнуть по ссылке с текстом   Awesomium кликнуть по ссылке с текстом  
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
19.07.2017, 17:07
SWAIPER, может потому что это не C#, а JS код?

Не по теме:

и зачем три раза одно и тоже писать?

0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
19.07.2017, 17:32
SeIZVeIZ, методу ExecuteJavaScript просто надо передать код в виде текста.
C#
1
webControl1.ExecuteJavaScript(@"Array.prototype.find.call(document.getElementsByTagName("a"), elt => elt.textContent == " Новые дорожные технологии").click();")
Что-то в этом роде.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
19.07.2017, 17:41
diadiavova, Вы это не мне пишите, а ТС, это он пытается JS код как шарповский использовать
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
19.07.2017, 17:52

Не по теме:

Цитата Сообщение от SeIZVeIZ Посмотреть сообщение
diadiavova, Вы это не мне пишите, а ТС, это он пытается JS код как шарповский использовать
Пардон - не заметил, что здесь еще кто-то есть :D



Добавлено через 7 минут
Цитата Сообщение от diadiavova Посмотреть сообщение
Что-то в этом роде.
Кавычки только надо заменить на одинарные
C#
1
webControl1.ExecuteJavaScript(@"Array.prototype.find.call(document.getElementsByTagName('a'), elt => elt.textContent == ' Новые дорожные технологии').click();")
0
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 21
20.07.2017, 10:46  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Кавычки только надо заменить на одинарные
C#Выделить код
1
webControl1.ExecuteJavaScript(@"Array.pr ototype.find.call(document.getElementsBy TagName('a'), elt => elt.textContent == ' Новые дорожные технологии').click();")
Попробовал и в итоге вообще никаких действий не происходит. В поисковиках уже искал ответ и так ничего и не нашел.

Добавлено через 20 минут
Проверял данный код Array.prototype.find.call(document.getEl ementsByTagName('a'), elt => elt.textContent == ' Новые дорожные технологии').click(); в консоли браузера, отработал код на отлично. Но по какой-то причине вообще не хочет работать в Awesomiume стоит версия 1.7.5.
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
20.07.2017, 11:21
Цитата Сообщение от SWAIPER Посмотреть сообщение
Но по какой-то причине вообще не хочет работать в Awesomiume
Код подразумевает точное совпадение строки с содержимым искомого элемента. Например пробел вначале я поставил из-за того, что он есть у тебя в примере. Убедись в том, что на странице содержимое искомого элемента точно совпадает с текстом проверки, а если там не только текст, то проверяй innnerHTML вместо textContent.
0
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 21
20.07.2017, 15:35  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Код подразумевает точное совпадение строки с содержимым искомого элемента. Например пробел вначале я поставил из-за того, что он есть у тебя в примере. Убедись в том, что на странице содержимое искомого элемента точно совпадает с текстом проверки, а если там не только текст, то проверяй innnerHTML вместо textContent.
Проверил все несколько раз, всё совпадает точь в точь. Смотрел, какой html документ получаем для обработки и там тоже есть пробел перед текстом. В браузере при выполнении js все отрабатывается на отлично, а вот в Awesomiume вообще не хочет работать и не понятно, почему так. Смотрел на иностранных форумах, так там тоже поднимали подобный вопрос и также не срабатывал код в Awesomiume а в браузере все работало. Даже и не знаю, куда ещё копать. Думал может JS не работает вообще, попробовал код вставки текста в input, все сработало. А клик вообще не хочет работать.
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
20.07.2017, 16:56
Лучший ответ Сообщение было отмечено SWAIPER как решение

Решение

SWAIPER, проверил - действительно не работает. Выяснил, что в авесомиуме отсутствует функция find у массива и не поддерживаются стрелочные функции. Видимо старая версия.
C#
1
2
3
4
5
6
7
            webControl1.ExecuteJavascript(@"
            var a = Array.prototype.filter.call(document.getElementsByTagName('a'), function(elt)
            {
                return elt.textContent == ' Новые дорожные технологии';
            })[0];
            a.click();
            ");
Добавлено через 10 минут
Или уж совсем традиционно
C#
1
2
3
4
5
6
7
8
9
10
11
            webControl1.ExecuteJavascript(@"
var aa = document.getElementsByTagName('a')
for(var i = 0; i < aa.length; i++)
{
    if(aa[i].textContent == ' Новые дорожные технологии')
    {
        aa[i].click();
        break;
    }
}            
            ");
2
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 21
24.07.2017, 10:32  [ТС]
[quote="diadiavova;10633099"]C#Выделить код

Спасибо ВАМ огромное! Все два кода отрабатывают на отлично)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.07.2017, 10:32
Помогаю со студенческими работами здесь

как програмно кликнуть по ссылке в интернете
Нужно программно кликнуть по ссылке в интернете! Вот есть страничка ссылка удалена там есть ссылка на бесплатное скачивание, как мне по...

Кликнуть по ссылке WebBrowser зная только class
Подскажите как в Webbrowser-е кликнуть по ссылке зная только class=&quot;ru&quot; Спасибо за ранее. Добавлено через 36 секунд И если таких...

Awesomium - клик по ссылке
Добрый день) нужно нажать на ссылку: &lt;a href=&quot;#&quot; class=&quot;btn btn-small btn-inline btn-primary&quot; style=&quot;opacity:0.4&quot;...

Awesomium не переходит по ссылке
Не переходит по ссылке.. Вот пример: http://screenshot.su/show.php?img=c8788fed514a64536754d5563cd9a4c6.jpg Все уже облазил, не могу...

Какие из перечисленных действий произойдут, если кликнуть по данной ссылке?
Какие из перечисленных действий произойдут, если кликнуть по данной ссылке? &lt;A HREF=&quot;1.htm&quot;...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru