crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QWebElement не находит дочернии элементы
EvgeniyM
  опции профиля:
сообщение 15.12.2012, 15:21
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 14.12.2012
Пользователь №: 3643

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема в следующем, как бы я не старался, чем бы не искал (QWebFrame или QwebElement), нигде у меня не может найти элементы ниже иерархии "html/head" и "html/body".
Все эти три элемента (html, head, body) спокойно находит, а ниже нет и все.
Весь вечер плясал с бубнами, уже подумал может со сборкой у меня что-то не то (код компилится, страницы отлично рендериться).

Листинг можно воспроизвести легко у себя.
#include <QtCore/QtCore>
#include <QtGui/QtGui>
#include <QtWebKit/QtWebKit>

int main(int argc, char *argv[])
{
    QApplication *app = new QApplication(argc, argv);

    QWebView *web = new QWebView();
    web->load(QUrl("http://php.net/"));
    QWebFrame *frame = web->page()->mainFrame();
    
     QWebElementCollection el = frame->findAllElements("p");
     qDebug() << el.toList().size();
    
    web->show();
    return app->exec();
}


Тут код должен найти все элементы "p" (их там много) и вывести их число. У меня получается "0" (или объект является "isNull" если для одного элемента).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mezmay
  опции профиля:
сообщение 15.12.2012, 15:28
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Наверное надо перейти на уровень документа:
QWebElement document = frame->documentElement();

и в нем искать
QWebElement firstTextInput = document.findFirst("input[type=text]");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
EvgeniyM
  опции профиля:
сообщение 15.12.2012, 16:11
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 14.12.2012
Пользователь №: 3643

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(mezmay @ 15.12.2012, 16:28) *
Наверное надо перейти на уровень документа:
QWebElement document = frame->documentElement();

и в нем искать
QWebElement firstTextInput = document.findFirst("input[type=text]");

С этого и начинал, это просто уже последние попытки. То есть QWebElement не ищет так же. Даже тупо беру элемент - и говорю мне найти первый дочерний элемент - и пусто.
У вас работает тот код?

Может кодировка, я уже не знаю, хотя кормил как cp1251 так и utf-8 (последний сайт utf8)

Может кодировка, я уже не знаю, хотя кормил как cp1251 так и utf-8 (последний сайт utf8)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mezmay
  опции профиля:
сообщение 15.12.2012, 16:22
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


А ждать loadFinished() кто будет?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
EvgeniyM
  опции профиля:
сообщение 15.12.2012, 16:25
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 14.12.2012
Пользователь №: 3643

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(mezmay @ 15.12.2012, 17:22) *
А ждать loadFinished() кто будет?)

Чорт, спасиб
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 6:22