Подтвердить что ты не робот

Автоматизация Chrome

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

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

EDIT. На этом этапе я узнал о расширениях Google Chrome. Похоже, что их легко построить и позволит мне (я думаю) сказать браузеру открыть новую вкладку, перейти на страницу, манипулировать DOM на этой странице (например, заполнить некоторые поля и войти в систему), а затем манипулировать DOM на странице ответов. GCE не позволяют делать файлы ввода/вывода, поэтому они не похожи на Firefox Extensions с XPCOM, но вы можете обойти это, используя AJAX для отправки данных на бэкэнд script (например, PHP скрипт на LAMP сервер), чтобы сохранить эти данные.

EDIT: Кстати, и это немного не по теме (но я добавляю, чтобы уточнить) те "дикие вещи" в Javascript, о которых я говорил, были, когда вы манипулировали DOM, создавая URL-адрес, который выглядит так:

javascript:(function(){...your URL-encoded Javascript here...})();
4b9b3361

Ответ 1

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

Ответ 2

Вы можете использовать Python для автоматизации веб-задач с помощью pywebkitgtk. Это привязка Python для WebKitGtk, которая использует механизм WebKit, тот же движок, что и хром.

Благодаря этому сообщению в блоге 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 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(). Тогда ваше приложение будет работать без GUI. (Примечание. Вам все еще нужен сервер отображения.)

В настоящее время у нас пока нет хороших документов pywebkitgtk, поэтому вы должны вместо этого посмотреть документацию WebKitGtk. Удачи.

Ответ 3

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

  • Открыть iMacros
  • Нажмите "Запись".
  • Перейдите к обычной рутине.
  • Нажмите кнопку остановки.

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

Ответ 4

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

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

Ответ 5

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