E
Jan. 26, 2020, 1:59 a.m.

Динамический парсинг сайтов QWebEngineView

QWebEngineView, QWebEnginePage

Добрый вечер!
Пытаюсь выполнить скрипт на странице, кт выдает выпадающий список, но не получается выполнить ни какой скрипт, вот код:

preview - QWebEnginView - виджет на форме, после получения сигнала(loadFinished) кторого, вызывается слот с кодом:

  1. ui->preview->page()->runJavaScript("document.getElementsByTagName(\"javascript: _script_name_\")", [this](const QVariant& v)
  2. {
  3. if (v.toString() == "true")
  4. {
  5. qDebug() << "Exelent!";
  6. }
  7. else
  8. {
  9. qDebug() << "Error";
  10. }
  11. });

Но в дебаг выводится Error, хотя в консоли браузера данная команда хоть и не запускает скрипт, но выполняется(выводт парметры выбранного элемента)
То что я хочу сделать возможно?

2

Do you like it? Share on social networks!

3
E
  • Jan. 26, 2020, 3:49 p.m.
  • (edited)
  • The answer was marked as a solution.

Уже решил проблему)))

  1. ui->preview->page()->runJavaScript("javascript: __doPostBack('...')", [this](const QVariant& v)
  2. {
  3. if (v.toString() == "true")
  4. {
  5. qDebug() << "Exelent!";
  6. }
  7. else
  8. {
  9. qDebug() << "Error";
  10. }
  11. });
    Evgenii Legotckoi
    • Jan. 26, 2020, 5:39 p.m.

    Добрый день.

    Вы не поняли проблему и просто скопировали то, что было в моём примере в рамках моей задачи, ожидая, что возвращаемым значением будет true .
    Этот аргумент возвращает строку, в которой может быть что угодно в качестве возвращаемого значения. В рамках моей задачи возвращаемым значением было true , поэтому и провека была на true .

    Напишите так и посмотрите, что там будет в качестве результата.

    1. ui->preview->page()->runJavaScript("document.getElementsByTagName(\"javascript: _script_name_\")", [this](const QVariant& v)
    2. {
    3. qDebug() << v.toString();
    4. });

    P/S/ Используйте, пожалуйста, диалог для вставки программного кода. В противном случае разметка в сообщении становится разбитой в случае некоторых конструкций.

      E
      • Jan. 26, 2020, 10:14 p.m.

      Да, я не понял до конца того, как это работает, мало опыта работы с qt и QVAriant ни разу не использовал. Спасибо за помощь)

        Comments

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Last comments
        • Evgenii Legotckoi
          April 16, 2025, 5:08 p.m.
          Благодарю за отзыв. И вам желаю всяческих успехов!
        • IscanderChe
          April 12, 2025, 5:12 p.m.
          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
        • AK
          April 1, 2025, 11:41 a.m.
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          March 9, 2025, 9:02 p.m.
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          March 9, 2025, 4:14 p.m.
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…