Автоматизация задач на веб-сайте на бездисплейном сервере

Если у Вас есть интерес к выбиранию цветов как переменные, следующее может быть полезным для установки цветной панели для сценариев удара

COL_BLACK="\x1b[30;01m"
COL_LIGHTBLACK="\x1b[30;11m"
COL_BLUE="\x1b[34;01m"
COL_LIGHTBLUE="\x1b[34;11m"
COL_CYAN="\x1b[36;01m"
COL_LIGHTCYAN="\x1b[36;11m"
COL_GRAY="\x1b[37;11m"
COL_LIGHTGRAY="\x1b[37;01m"
COL_GREEN="\x1b[32;01m"
COL_LIGHTGREEN="\x1b[32;11m"
COL_PURPLE="\x1b[35;01m"
COL_LIGHTPURPLE="\x1b[35;11m"
COL_RED="\x1b[31;01m"
COL_LIGHTRED="\x1b[31;11m"
COL_YELLOW="\x1b[33;01m"
COL_LIGHTYELLOW="\x1b[33;11m"

COL_RESET="\x1b[39;49;00m"
3
24.05.2013, 14:09
3 ответа

Можно выполнить Селен на бездисплейной установке на сервере, например, путем программирования действий в Python с помощью pyvirtualdisplay.

pyvirtualdisplay позволяет Вам использовать a xvfb, xepher или xvnc экранируйте, таким образом, можно сделать снимок экрана (или взять удаленный быстрый взгляд для наблюдения то, что продолжается).


На установке Ubuntu 12.04:

sudo apt-get install python-pip tightvncserver xtightvncviewer
sudo pip install selenium pyvirtualdisplay

и выполненный следующее (это использует более новый Selenium2 API, более старый API, все еще доступно также):

import subprocess
from pyvirtualdisplay import Display
from selenium import webdriver

def browse_it(port=None):
    browser = webdriver.Firefox()
    page = browser.get('http://unix.stackexchange.com/questions')
    for question in browser.find_elements_by_class_name('question-hyperlink'):
        print question.text
    if port:
        print '--------\nconnect using:\n  vncviewer ' + \
          'localhost:{}\nand click the xmessage to quit'.format(port)
        subprocess.call(['xmessage', 'click to quit'])
    browser.quit()

def browse_it_hidden(rfbport=5904):
    with Display(backend='xvnc', rfbport=str(rfbport)) as disp:
        browse_it(rfbport)

if __name__ == '__main__':
    browse_it_hidden()

xmessage предотвращает браузер для выхода, в тестовых средах Вы не хотели бы это. Можно также звонить browse_it() непосредственно протестировать на переднем плане.

Результаты Селена find_element.....() не обеспечивайте вещи как выбор родительского элемента элемента, который Вы просто нашли. Что-то, что Вы могли бы ожидать от пакетов парсинга HTML (я считал где-нибудь это, нарочно). Эти ограничения могут быть видом стычки, если Вы делаете очистку страниц, Вы не имеете никакого контроля. При тестировании собственного сайта просто удостоверьтесь, что Вы генерируете все элементы, которые Вы хотите протестировать с id или уникальный class таким образом, они могут быть выбраны без стычки.

2
27.01.2020, 21:13
  • 1
    Это звучит интересным, есть ли документация для начала работы? –  Leandros 24.05.2013, 18:34
  • 2
    @Leandros я расширил это с помощью примера. Если просмотр ищет более новые примеры Selenium2 API, как я использовал здесь. Существует очень много селена (1) примеры вокруг того все еще работа, но приложите несколько больше усилий настроить. –  Anthon 25.05.2013, 16:03

Взгляните на WWW:: Механизируйте (Примеры по http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/Examples.pod). Это берет Вашу веб-страницу в качестве объекта и делает все элементы доступными с помощью методов.

Например,

$m->get("https://lists.ccs.neu.edu/bin/admindb/$listname");
$m->set_visible( $password );
$m->click;

Существуют порты для (al наименьшее) рубин и Python, также.

4
27.01.2020, 21:13
  • 1
    , можно использовать Firefox Live HTTP Headers плагин для записи сессии между браузером и веб-сайтом, так, чтобы Вы поняли взаимодействие полного пути, также. Какие cookie необходимо сохранить? Существующий? Какие формы называют с какой переменные и скрытые переменные и т.д. После того как у Вас есть все это, это должно быть достижимо для автоматизации задачи. –  Tim Kennedy 24.05.2013, 15:30

Вы могли использовать любой из:

  • Perl с WWW:: Механизируйте или даже разверните свое собственное использование их HTTPClient
  • Selenium/WebDriver
  • Google Chrome или Расширение Firefox (существующий или то, которое Вы пишете),
  • сценарий оболочки с помощью завихрения и wget (необходимо будет сохранить и снова послать данные сессии),
  • HtmlUnit
  • ...

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

1
27.01.2020, 21:13

Теги

Похожие вопросы