Нажать кнопку в tchromium

  • Автор темы Автор темы Shouldercannon
  • Дата начала Дата начала
S

Shouldercannon

Доброго времени суток!
Помогите пожалуйста нажать на кнопку в Delphi XE7, которая имеет код
HTML:
<a class="pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary" href="#" rel="async" role="button">Просмотреть еще 134<i class="mhs mts arrow img sp_Ss0nf7RU1fT sx_24510d"></i></a>
Тут нет ни onclick, ни submit.
Код:
JSCode := 'document.getElementById или getElementsByClassName("name").click();';
Не работает.
 
Помогите пожалуйста нажать на кнопку в Delphi XE7, которая имеет код
HTML:
<a class="pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary" href="#" rel="async" role="button">Просмотреть еще 134<i class="mhs mts arrow img sp_Ss0nf7RU1fT sx_24510d"></i></a>
Тут нет ни onclick, ни submit.
А что значит нажать на кнопку? :)
Кнопки у Вас никакой и нету. У Вас есть тэг "<a>" (элемент-ссылка) http://htmlbook.ru/html/a
естественно у него нету ни onclick, ни submit. Ведь у него есть атрибут href.
Кстати href="#" означает что по клику будет произведен релоад URL той самой страницы где Вы сейчас находитесь...

Код:
JSCode := 'document.getElementById или getElementsByClassName("name").click();';
Не работает.
А должно? :)
 
В данном случае нет. С widget comments VK это работает, да и там хоть по человечески сделано
HTML:
<a href="" onclick="WComments.showMore(); return false;" id="wcomments_more_link" style="">
	  <div class="progress" id="wcomments_more_progress"></div>
	  <div id="wcomments_more">к предыдущим записям ↓</div>
	</a>
Код:
JSCode := 'document.getElementById("wcomments_more_link").click();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode, '', 0);
Chromium1.Browser.MainFrame.GetSourceProc(CallbackGetSource);
Как теперь проблему решить, из-за неё всё остановилось.
Пробовал так
Код:
var
  JSCode: string;
begin
  JSCode := 'function fireEvent(element,event) {' +
			  'var evt = document.createEvent("HTMLEvents");' +
			  'evt.initEvent(event, true, false); // event type, bubbling, cancelable' +
			  'element.dispatchEvent(evt);' +
			'}' +
			'fireEvent(document.getElementById("pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary"), "click");';
 
  Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode, '', 0);
А id у ссылки нет и способ бестолковый.
 
Последнее редактирование:
естественно у него нету ни onclick
onclick. я даже и не знаю, есть ли теги у которых его нет, исключая конечно всякие доп параметры обжектов и т.п.
[DOUBLEPOST=1428246567,1428246500][/DOUBLEPOST]
Кстати href="#" означает что по клику будет произведен релоад URL той самой страницы где Вы сейчас находитесь...
это вы выдумали, никакого релоада не происходит, это просто заглушка, правда отскролит в топ
[DOUBLEPOST=1428246833][/DOUBLEPOST]@Shouldercannon, откуда ссылка? надо смотреть что она делает в натуре
 
Последнее редактирование:
ну если я правильно понял то там клик идет по диву который кнопку изображает
 
То есть сие
HTML:
<div class="clearfix mts mlm uiMorePager stat_elem fbFeedbackPager fbFeedbackTopLevelPager _52jv" id="pager5521628cc35164724602434"><div><a class="pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary" href="#" rel="async" target="_blank" role="button">Просмотреть еще 134<i class="mhs mts arrow img sp_comments sx_comments_arrowb"></i></a><span class="uiMorePagerLoader pam uiBoxLightblue fbFeedbackPagerLink"><img class="img" src="https://fbstatic-a.akamaihd.net/rsrc.php/v2/yb/r/GsNJNwuI-UM.gif" alt="" width="16" height="11"></span></div></div>
Как то запутано всё
 
при чем тут запутано или нет? так сделали так им захотелось
я вижу что фигурирует объект именно дива когда отсылается запрос
 
Как теперь в таком случае добраться до этого элемента и сделать по нему клик?
 
точно также, только зачем вам браузер? это все можно сделать без него
 
точно также, только зачем вам браузер? это все можно сделать без него
Из браузера забираю исходный код страницы, причём весь код может вывести только TCromium.
 
это вы что-то придумываете, TWebBrawser использует ИЕ, а в ие всё видно
а зачем вам все? там мусора 70%
 
Как теперь в таком случае добраться до этого элемента и сделать по нему клик?
ну... добраться всегда как нибудь можно...
например можно попробовать собрать лист элементов по имени тэга.
http://www.w3schools.com/jsref/met_element_getelementsbytagname.asp
Потом пробежаться по нему и отыскать нужный (к примеру читать/проверять атрибут class у самого элемента и его парента).
А вот с кликом...
Вот я лично подозреваю что обработчик клика приклеивается к элементу только в момент когда мышь над элементом появляется...
(см. страшный код добавляемых через ServerJSQueue.add идущих вслед за контентом)
 
sinkopa сказал(а): ↑

Кстати href="#" означает что по клику будет произведен релоад URL той самой страницы где Вы сейчас находитесь...

это вы выдумали, никакого релоада не происходит, это просто заглушка, правда отскролит в топ
угу, согласен... почти... если "href-заглушка" в мэйновом фрейме и отсутствует атрибут target... тогда да... скаконём к шапке... :)
 
это вы что-то придумываете, TWebBrawser использует ИЕ, а в ие всё видно
а зачем вам все? там мусора 70%
Уже пробовал потому и говорю. Из IE можно получить исходники того, что было загружено в первый раз, то что загружается дальше (нажатие на ссылку Показать ещё) не отображается в исходном коде. Даже если все фреймы из IE сохранить, то всё равно части исходного кода нет. Так бы я никогда TChromium бы не использовал.
 
что вы пробовали не знаю, я говорю то что есть на самом деле
откройте ие, загрузите страницу, нажмите F12 все есть, нажмите подгрузить, опять все есть

никаких исходных кодов не надо, надо смотреть в ДОМ
 
Решено
Код:
document.getElementsByClassName("pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary")[0].click();
 
Последнее редактирование:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab