有一种方法可以将本地配置文件传递给远程驱动程序:
FirefoxProfile p = new FirefoxProfile();
DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setCapability(FirefoxDriver.PROFILE, p);
URL remote = null;
try {
remote = new URL("http://x.x.x.x:4444/wd/hub");
} catch (MalformedURLException e) {
e.printStackTrace();
}
RemoteWebDriver driver = new RemoteWebDriver(remote, capability);
会话完成后,我会在x.x.x.x上看到类似“anonymous2926416537184265625webdriver-profile”的文件夹,其中包含带有新cookie,历史记录,LocalStorage等的更新个人资料。
有一个方法p.toJson(),但它返回本地配置文件。问题是如何在x.x.x.x上获取“anonymous2926416537184265625webdriver-profile”的内容?
答案 0 :(得分:2)
一旦执行完成/ JVM存在,在Temp中创建的匿名文件夹通常不会有用。根据提供的文件here
" public java.io.File layoutOnDisk()
调用此选项可将当前配置文件写入磁盘。返回配置文件目录。请注意,此配置文件目录是临时目录,并且在JVM存在时将被删除(最迟)此方法应在开始使用配置文件之前立即调用,并且每个FirefoxDriver实例只应调用一次。
返回: 包含配置文件的目录。 "
如果您在执行时观察到临时文件夹,则会创建和删除几个匿名文件夹,最后只有一个文件夹。我们可能会得到类似下面的文件夹名称,但在存在时它会有不同的名称。
System.out.println(profile.layoutOnDisk());
所有配置文件首选项都在prefs.js中更新,该首选项在该匿名文件夹中可用。它将包含提供的setPreference,在脚本中添加扩展以及其他默认的firefox配置文件首选项。由于我们已经在脚本中提供了所需的首选项,因此我希望不需要从此文件中获取数据。
也不建议从目录启动firefox配置文件。根据文件
" FirefoxProfile
public FirefoxProfile(java.io.File profileDir)
从现有的配置文件目录构造一个firefox配置文件。
需要此功能的用户应考虑使用已命名的个人资料。
参数: profileDir - 用作模型的配置文件目录。"
不仅来自这个匿名文件夹,对我来说,它在保存的配置文件目录中没有按预期工作(通常在AppData \ Local \ Mozilla中)。我所有的方式都使用个人资料的名称,当然,我希望,大多数只会使用名称,而不是保存目录。
众所周知的driver.manage()。getCookies();将提供一套饼干,如果需要,我们可以获得。
谢谢你, 穆拉利