, Это простой способ автоматизировать некоторые веб-задачи

ел некоторые дикие вещи, которые случались, когда я вставлял какой-то код Javascript в URL в Firefox и Chrome. Можно ли использовать эту технику, чтобы указать Chrome посетить URL-адрес и затем сохранить его в виде файла? Я пытаюсь автоматизировать Chrome, а Selenium выглядел чрезвычайно пугающим.

РЕДАКТИРОВАТЬК сожалению, я забыл быть более ясным здесь. Позволь мне объяснить. Такие вещи, как wget, curl и т. Д. Не будут работать, потому что я должен пройти через логины в некоторых из этих скриптов. И я посмотрел на iMacros, но обнаружил, что я не могу заставить их работать из командной строки, кроме как в Windows, если я не заплачу за пакет за 499 долларов. Некоторые другие преимущества GCE заключаются в том, что платформа dev является бесплатной и в некоторой степени открытой, а также кроссплатформенной. (Я использую Linux.)

РЕДАКТИРОВАТЬ: На данный момент я изучаю расширения Google Chrome. Похоже, их легко построить, и я позволю (я думаю) сказать браузеру открыть новую вкладку, перейти на страницу, манипулировать DOM на этой странице (например, заполнить некоторые поля и войти в систему), а затем манипулировать ДОМ на странице ответа. GCE не позволяют вам выполнять файловый ввод / вывод, поэтому они не похожи на Firefox Extensions с XPCOM, но вы можете обойти это, используя AJAX для отправки данных в бэкэнд-скрипт (например, PHP-скрипт на сервере LAMP) для сохранения эти данные.

РЕДАКТИРОВАТЬКстати, и это немного не по теме (но я добавлю, чтобы уточнить) те "дикие вещи" в Javascript, которые я упоминал, были, когда вы манипулируете DOM, создавая URL, который выглядит так:

javascript:(function(){...your URL-encoded Javascript here...})();
 Kyle Wild19 янв. 2011 г., 02:33
Вы на машине nix? Если так,wget твой друг!
 Tienkamp15 мар. 2017 г., 16:25
Есть бесплатный инструментKantu Web Automation - он работает с Chromium и позволяет автоматизировать сайты с помощью скриншотов. Он также имеет интерфейс командной строки и API.

Ответы на вопрос(5)

Watir! Я нахожу это чрезвычайно простым. С Selenium он работает так же легко, как и с Chrome, IE или Firefox. Хотя версия для Chrome еще официально не поддерживается, они утверждают, что ее можно использовать. Я сам использовал его только для Selenium, IE и Firefox.

Кроме того, Watir легко интегрируется сОгурец, если вы ищете ультрасовременный BDD (Behavior-Driven Development). Это просто код Ruby, с открытым исходным кодом и размещенный наGitHub, Наслаждайтесь!

 Volomike20 янв. 2011 г., 20:27
Если кто-то из фанатов Ruby, конечно, пойти на это. Я не фанат Ruby.

iMacros для Chrome, Это довольно простая в использовании система автоматизации.

Открыть iMacrosНажмитезапись.Пройдитесь по рутине.Нажмите Стоп.

Я не думаю, что это может быть легче, чем это. Сохраненные сценарии находятся в виде простого текста, поэтому вы можете отредактировать их для некоторого точного контроля зерна, если это будет необходимо.

 Volomike19 янв. 2011 г., 03:59
Смотрите мой новый комментарий. Прошу прощения, что мне было не яснее. Во-первых, iMacros не позволит вам полностью автоматизировать, если вы не купите версию за 499 долларов, а это полностью автоматизирует только в Windows. Под полной автоматизацией я имею в виду создание сценария запланированного задания. Я пытался заставить работать бесплатную версию iMacros для Linux с заданием cron или даже запустить (вручную) из командной строки для Firefox. Что происходит? IMacro не запускается автоматически в Linux. Вместо этого Firefox просто открылся и остановился. А среда для Chrome слишком бета - не позволит вам сохранить файл.
 HerrimanCoder04 янв. 2013 г., 21:00
iMacros это мусор. Я попробовал это дважды для 2 разных целей, и ни одна не работала. Мне показалось, что я записываю свои команды и волнуюсь. В обоих случаях я делал что-то очень простое: зайти на веб-страницу онлайн, заполнить форму, нажать кнопку «Отправить». У них даже есть образец сценария, который делает это. Но в обоих моих случаях он просто выдавал ошибку во время воспроизведения и не работал вообще. Junk.

http://qaagent.com, Это простой способ автоматизировать некоторые веб-задачи

pywebkitgtk, Это привязка Python для WebKitGtk, которая использует движок WebKit, тот же движок, что и Chrome.

Благодаря этому сообщению в блоге,pywebkitgtk - выполнить JavaScript из PythonЯ сделал подклассwebkit.WebView чтобы сделать эти задачи проще.

import gtk
import webkit
import json

class WebView(webkit.WebView):
    def eval_script(self, script):
        self.execute_script('oldtitle=document.title;document.title="!!!!";document.title=JSON.stringify(eval(' + json.dumps(script) + '));')
        result = json.loads(self.get_main_frame().get_title())
        self.execute_script('document.title=oldtitle;')
        return result
    def wait_for_load(self):
        handle = None
        def load_status_cb(view, frame):
            if frame == view.get_main_frame():
                self.disconnect(handle)
                gtk.main_quit()
        handle = self.connect('load-finished', load_status_cb)
        gtk.main()

Я добавил функцию под названиемeval_script который какexecute_script, но вы можете получить результаты функции в виде объектов Python. Вам просто нужно убедиться, что то, что вы оцениваете, является JSON-сериализуемым.

Кроме того, я добавилwait_for_load функция, которая довольно очевидна.

Чтобы настроить пользовательский интерфейс, сначала необходимо создать окно, прокручиваемое окно и веб-представление.

# window
window = gtk.Window()
window.set_default_size(800, 600)

# scroll view
scroll_view = gtk.ScrolledWindow()
scroll_view.props.hscrollbar_policy = gtk.POLICY_AUTOMATIC
scroll_view.props.vscrollbar_policy = gtk.POLICY_AUTOMATIC

# web view
web_view = WebView()

# events
window.connect('delete-event', lambda window, event: gtk.main_quit())

# show
scroll_view.add(web_view)
window.add(scroll_view)
window.show_all()

Тогда вы можете начать автоматизировать вещи! Например, этот код загружает страницу входа в StackOverflow, нажимает кнопку входа в Facebook, вводит имя пользователя и пароль (в данном случае «тест»). Наконец, он показывает текст кнопки входа.

# the script is here
web_view.open('http://www.stackoverflow.com/users/login')
web_view.wait_for_load()

web_view.execute_script('openid.signin("facebook")')
web_view.wait_for_load()

web_view.execute_script('document.querySelector("#email").value = "test"')
web_view.execute_script('document.querySelector("#pass").value = "test"')

print "Login's button text is:", web_view.eval_script('document.querySelector("#buttons input[type=\\"submit\\"]").value')

В моем случае интерфейс Facebook был на тайском языке, и я мог видеть текст кнопки входа в систему.

Текст кнопки входа в систему: เข้า สู่ ระบบ

Вы также можете сделать это на самом деле нажмите кнопку отправки, просто позвонивclick() на этом элементе.(Запись:click() работает для элементов кнопки, а не для ссылок)

web_view.execute_script('document.querySelector("#buttons input[type=\\"submit\\"]").click()')
web_view.wait_for_load()

Вы заметите, что после завершения всех сценариев приложение закрывается без ожидания.

Если вы хотите, чтобы приложение работало после завершения всех сценариев, вам нужно добавить последнюю строку:

gtk.main()

Кроме того, если вы удалитеwindow.show_all() линия и последнийgtk.main() линия. Тогда ваше приложение будет работать без графического интерфейса.(Примечание. Вам все еще нужен сервер отображения.)

Сейчас у нас пока нет хороших документов по pywebkitgtk, так что вам стоит взглянуть наДокументация WebKitGtk вместо. Удачи.

Решение Вопроса

Расширение Google Chrome (GCE), Это легко узнать в течение 4 часов, если вы знаете, как делать немного продвинутые вещи Javascript, и это очень мощный. Я могу использовать API вкладок, чтобы создать новую вкладку и перейти к определенному URL. Затем я могу вставить jQuery в этот URL и заставить его манипулировать DOM или делать все, что мы обычно можем делать с jQuery. Я не могу выполнить файловый ввод / вывод, но есть два обходных пути. Во-первых, я могу заставить браузер загружать файл из удаленного местоположения и отправлять данные с текущей страницы обратно на удаленный сервер с помощью вызовов jQuery $ .get () или $ .post ().

 Web User14 февр. 2017 г., 09:29
Я периодически запускаю JavaScript, используяsetInterval функция, которая манипулирует DOM. Я делаю это, открывая Chrome Dev Tools и внедряя скрипт в консоль JavaScript. Проблема в том, что если страница перезагружается, то мне нужно заново ввести скрипт вручную. Есть ли способ автоматизировать это, чтобы скрипт непрерывно выполнялся, выживая после перезагрузки страницы?
 jechaviz06 июн. 2017 г., 05:09
Есть ли учебник с примером где-нибудь?

Ваш ответ на вопрос