Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
8 / 8 / 2
Регистрация: 08.07.2016
Сообщений: 157
1

Как программно нажать на кнопку на странице

17.07.2018, 12:30. Показов 2652. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте. мне нужно перед парсингом html как то программно нажать на номер телефона на странице, чтобы он раскрылся. подскажите пожалуйста как это можно сделать средствами Qt. вот как выглядит на странице и html код:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<ul id="contact_methods" class="offer-sidebar__buttons contact_methods">
            <li  >
        <a href="https://olx.uz/obyavlenie/contact/nukusskaya-ul-4h-kom-evroremont-novostroyka-100m2-k3645-ID19VPe.html?bs=adpage_chat_login_top"
           class="contact-button button-email {'id_raw': '17147416'} atClickTracking" >
        <i data-icon="message"></i>
        <span class="contactbox-indent rel brkword">
                            Написать автору                    </span>
        </a>
    </li>
            <li>
        <div class="contact-button link-phone {'path':'phone', 'id':'19VPe', 'id_raw': '17147416'} atClickTracking contact-a" data-rel="phone">
            <i data-icon="phone"></i>
                            <strong class="xx-large">+9xxxxxxxxxx</strong>
                <span class="spoiler">
                    Показать                </span>
                    </div>
    </li>
</ul>
Миниатюры
Как программно нажать на кнопку на странице  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2018, 12:30
Ответы с готовыми решениями:

Как программно нажать кнопку на интернет странице?
Как можно реализовать нажатие кнопки в браузере, на странице? Если это возможно, подскажите...

Программно нажать на кнопку на Web-странице
Как программно нажать на кнопку если код html кнопки &lt;input type=&quot;button&quot; accesskey=&quot;q&quot;...

Программно нажать на кнопку на странице webbrowser если у элемента нет ID
&lt;input value= Войти data-l=&quot;t,sign_in type=submit class='button-pro wide’&gt; == $0 Это кнопка &quot;войти...

Программно нажать кнопку на открытой в стороннем браузере веб-странице (cpp Builder 6)
Здравствуйте! Помогите разобраться с одной прикладной задачкой! Суть в следующем: допустим на...

9
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
18.07.2018, 16:14 2
Есть специальные библиотеки для таких нужд. Например, Selenium
Selenium

Добавлено через 1 минуту
Либо снифером смотреть, какой POST-запрос посылается при нажатии на эту кнопку и отправлять его с помощью QNetworkAccessManager
http://doc.qt.io/qt-5/QNetworkAccessManager.html

Добавлено через 2 минуты
Можете ещё посмотреть в строну QWebView evaluateJavaScript() + js-скрипт

Типо
C++ (Qt)
1
2
const QString& jScript = "document.getElementById('НазваниеКнопки').click()";
QWebView->QWebFrame->evaluateJavaScript(jScript);
https://stackoverflow.com/ques... the-window

Добавлено через 5 минут
http://www.prog.org.ru/topic_19533_0.html
1
8 / 8 / 2
Регистрация: 08.07.2016
Сообщений: 157
29.07.2018, 13:01  [ТС] 3
Цитата Сообщение от Peoples Посмотреть сообщение
Либо снифером смотреть, какой POST-запрос посылается при нажатии на эту кнопку и отправлять его с помощью QNetworkAccessManager
http://doc.qt.io/qt-5/QNetworkAccessManager.html
спасибо. мне бы этот способ подошел больше всего, т.к. QNetworkAccessManager я уже использую. только при нажатии на нужную мне кнопку вайршарк не показывает запроса с фильтром
Код
http.request.method == "POST"
. а если поставить фильтр только на нужный мне сайт, то выходит такое:
Миниатюры
Как программно нажать на кнопку на странице  
0
8 / 8 / 2
Регистрация: 08.07.2016
Сообщений: 157
29.07.2018, 13:04  [ТС] 4
там получается нет никакого запроса? или я не тот сниффер использую?
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
29.07.2018, 13:10 5
Kamila11, А вообще без фильтров, что показывает снифер при нажатии на кнопку?
0
8 / 8 / 2
Регистрация: 08.07.2016
Сообщений: 157
29.07.2018, 13:27  [ТС] 6
Peoples, вот:
Миниатюры
Как программно нажать на кнопку на странице  
0
8 / 8 / 2
Регистрация: 08.07.2016
Сообщений: 157
30.07.2018, 22:10  [ТС] 7
Цитата Сообщение от Kamila11 Посмотреть сообщение
или я не тот сниффер использую?
оказывается https не каждый сниффер может перехватить. скачала HttpAnalyzerV7 - все ок.
только теперь непонятно, что делать, т.к. при нажатии на кнопку отправляется get. получается я не смогу воспользоваться QNetworkAccessManager?
вот скрин:
Миниатюры
Как программно нажать на кнопку на странице  
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.07.2018, 22:11 8
Можете
http://doc.qt.io/Qt-5/qnetwork... r.html#get
0
8 / 8 / 2
Регистрация: 08.07.2016
Сообщений: 157
30.07.2018, 23:09  [ТС] 9
Цитата Сообщение от Peoples Посмотреть сообщение
Можете
я это читала. я не понимаю, как.
так было:
C++ (Qt)
1
2
3
4
QUrl url(attr.at(j).value());
QNetworkRequest request(url);
QNetworkReply *reply = manager->get(request);
connect(reply,SIGNAL(finished()),this,SLOT(replyFinished()));
как с помощью QNetworkAccessManager::get(const QNetworkRequest &request) я могу получать номер?

Добавлено через 6 минут
так. кажется я поняла. все запросы уникальные, но на каждой странице есть такая штука:
HTML5
1
2
3
               <script>
               var phoneToken = '49e321ddd255b278ff41ce18ea7e5ece6d155b5b767552f8c07d7055207832d4096276ecebc9c9ab85681f5f919e0b670f1f909e9ee9cddc8622a129fda1a794';
           </script>
и у каждого тега с номером есть id, например: 'id':'19VPe'.
get запрос выглядит так (с другой страницы):
Код
/ajax/misc/contact/phone/19TkS/?pt=c6c88279d64700c59185332cd8426ffb46ff70ee9d5398656bbbb0f0001a35028d9e45e8d917d655522b204c23273e3fee007d7245a78900d5880d12bda38d88 HTTP/1.1
значит нужно формировать строку запроса из "/ajax/misc/contact/phone/" + "[id]" + "phoneToken" + "HTTP/1.1" ??
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.07.2018, 23:10 10
Kamila11, Попробуйте
0
30.07.2018, 23:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2018, 23:10
Помогаю со студенческими работами здесь

Как можно нажать программно нажать на кнопку, у которой нет id?
Как можно нажать программно нажать на кнопку, у которой нет id?? В html она прописывается так: &lt;a...

Как программно нажать кнопку
Подскажите пожалуйста,как можно прописать, чтоб vba программно нажать кнопку (кнопка называется...

Как программно нажать на кнопку?
И ещё, как программно нажать на кнопку в WPF? В C# нашёл SendKeys, но для него нужно прописать...

Как в С# программно нажать кнопку?
Здравствуйте. Нужно на простом примере открыть калькулятор,найти это окно,найти цифру 5, и...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru