2
工具总结:
 Watir-webdriver 1.8.17
 Mac OS X 10.7.3
 铬 18.0.1025.151

我目前正在使用 Watir WebDriver 在多个网站上自动执行 Chrome 会话。我需要在整个会话期间的某些时间点备份 Web 浏览器的状态(cookie、缓存等)。最初,我想我可以通过复制~/Library/Application Support/Google/Chrome/Default必要的点来使用 Ruby 的文件 IO 库来做到这一点。但是,使用 Watir WebDriver 创建的 Chrome 会话似乎并未将所需信息存储在此默认位置。我怎样才能找到这些数据来备份它?这些信息是否存储在其他地方?除了 Watir 之外,还有什么东西可以让这件事变得更容易吗?

4

2 回答 2

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]

然后可以使用 Ruby 的标准库对缓存、cookie 等进行备份、删除等操作。希望这对其他人有帮助。

编辑:如果您无法找到 watir-webdriver 默认存储用户数据的位置,请通过运行 watir-webdriver 和top. 获得 pid 后,lsof -p <pid>在终端中键入以查找用户数据的路径。

于 2012-04-08T20:26:25.597 回答
1

我喜欢做的另一件事是使用 YAML 将 Watir::Browser 对象序列化(保存)到一个文件中,如下所示:

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

然后,此browserObj.yaml文件将以易于阅读/可解析的文本包含各种内部详细信息,包括任何浏览器的 PID、临时配置文件的路径等。

profile_dir: /tmp/webdriver-rb-profilecopy20121201-1981-9o9t9a
于 2012-12-02T20:21:17.493 回答