2012-04-08 4 views
2
Summary of tools: 
watir-webdriver 1.8.17 
Mac OS X 10.7.3 
Chrome 18.0.1025.151

В настоящее время я использую Watir WebDriver для автоматизации сеансов Chrome на нескольких веб-сайтах. Мне нужно сделать резервную копию состояния веб-браузера (куки, кеш и т. Д.) В определенные моменты на протяжении всего сеанса. Первоначально я решил, что смогу сделать это с помощью библиотеки IO файла Ruby, скопировав ~/Library/Application Support/Google/Chrome/Default в нужные моменты. Тем не менее, похоже, что сеансы Chrome, созданные с помощью Watir WebDriver, сохраняют необходимую информацию в этом местоположении по умолчанию. Как я могу найти эти данные для резервного копирования? Сохранена ли эта информация в другом месте? Есть ли что-то другое, кроме Ватира, что облегчит это?Как сохранить состояние браузера после автоматизации Watir

ответ

6

У меня наконец-то есть решение!

Похоже, что watir-webdriver хранит данные пользователя/пользователя в случайном порядке. По умолчанию это можно найти здесь (где XXXXXX является случайным идентификатором):

/private/var/folders/2v/vkd2v3vs5njf69m59nqzc16m0000gn/T/.com.google.Chrome.XXXXXX/Default/

Вместо того, чтобы полагаться на это по умолчанию и рандомизированного пути, вы можете указать точное местоположение для пользовательских данных, используя следующий флаг:

Watir::Browser.new :chrome, :switches => %w[--user-data-dir=/path/to/user/data]

Затем кэш, куки и т.д. могут быть сохранены, удалены и т.д., используя стандартную библиотеку Руби. Надеюсь, это поможет кому-то другому.

Edit: Если вы не можете найти, где Watir-WebDriver хранит данные пользователя по умолчанию, найти идентификатор процесса Chrome, запустив Watir-WebDriver и top. Когда у вас есть pid, введите lsof -p <pid> в терминал, чтобы найти путь к пользовательским данным.

1

Другая вещь, которую я хотел бы сделать, это сериализации (сохранить) Watir :: Browser объект в файл с помощью YAML, например, так:

require "yaml" 
File.open("browserObj.yaml", 'w').write YAML::dump(@browser) 

Это browserObj.yaml файл будет содержать все виды внутренние детали в легко читаемом/анализируемом тексте, включая PID любого браузера, путь к профилю темпа и т. д. Например.

profile_dir: /tmp/webdriver-rb-profilecopy20121201-1981-9o9t9a 
Смежные вопросы