Название: поиск объекта на Google Docs Отправлено: WILY от Октябрь 05, 2015, 15:40 Добрый день
Пишу программу и решил в нее встроить гугл опросник. Хочу автоматически заполнять поля которые могу, такие как имя фамилия и. т. д. вывожу QWebView сам опрос, вопрос как найти на странице элемент и заложить в туда свое значение. Нагуглил такое решение Код
не могу как выделить атрибут для поиска элемента. Всем заранее спасибо! Название: Re: поиск объекта на Google Docs Отправлено: gil9red от Октябрь 05, 2015, 15:53 Правой кнопкой на объект и выбираете, например Инспектировать (для Firefox) у других браузеров есть свои, и смотрите какой тег и атрибут у полей и заполняете нужные. В вашем примере "input[type='text']" это что-то: <input type="text"><input>
QWebElement для поиска использует css-селекторы. Если там будут теги вида: <input class="first_name"> <input id="first_name"> то найти их можно так: QWebElement * doc = view->page()->mainFrame()->documentElement(); QWebElement * tag = doc ->findFirst(".first_name"); QWebElement * tag = doc ->findFirst("#first_name"); Это короткая запись для атрибутов class и id, можно и полную запись использовать, в которой указывается тег Чтобы проверить, что элемент нашелся проверяйте на isNone() Если не справитесь, то скиньте ссылку на тот вебдокумент Название: Re: поиск объекта на Google Docs Отправлено: WILY от Октябрь 05, 2015, 16:29 https://docs.google.com/forms/d/1Uh6pMB6c9lF9GUMdZcK-zXfdeAtjFM76uDA0l1uJ214/viewform
вот ссылка Попробовал вот по всякому Код
и вот так вот Код
все равно выводит none Название: Re: поиск объекта на Google Docs Отправлено: gil9red от Октябрь 05, 2015, 16:48 Скрипт на питоне, но использует он Qt
Название: Re: поиск объекта на Google Docs Отправлено: gil9red от Октябрь 05, 2015, 16:49 А страница у вас успела прогрузиться?
Попробуйте после вызова загрузки страницы и перед поиском тэга воспользоваться этим: QEventLoop loop; connect(view, SIGNAL(loadFinished()), &loop, SLOT(quit())); loop.exec(); Вроде бы правильно код написан Название: Re: поиск объекта на Google Docs Отправлено: WILY от Октябрь 05, 2015, 17:02 Написал вот так
Код
все равно не работает. Забыл указать у меня qt 4.7.0 и просто в место сбора бинарника скопированы ssl библиотеки Название: Re: поиск объекта на Google Docs Отправлено: gil9red от Октябрь 05, 2015, 17:34 Проверил, loadFinished() надо так: loadFinished(bool)
Приложил мини пример Название: Re: поиск объекта на Google Docs Отправлено: WILY от Октябрь 06, 2015, 09:31 Спасибо большое, все работает, есть еще следующий вопрос. Я так понял мы идем объект по его id и вставляем текс, но если мы будем делать различные формы, то и id соответственно будет разным. Есть ли возможность например парсить тип объекта? или например по заголовку?
Название: Re: поиск объекта на Google Docs Отправлено: gil9red от Октябрь 06, 2015, 09:40 Вы можете искать объекты хоть по любому типу (div, input, button и т.п.), хоть просто по атрибутам, хоть смешано.
Посмотрите в гугле "css-selectors". Если возможностей css-селектора мало, можно работать через QWebElement'ы, например: self.mw.doc это QWebElement функция ищет объекты с class="alert", у которых есть вложенный тег с id="alert-title", значением которого строка "Восстановить здоровье". Код
Название: Re: поиск объекта на Google Docs Отправлено: WILY от Октябрь 06, 2015, 09:59 Спасибо большое, вот решение
Код
|