您要Google Chrome保存此站点的密码吗?
如何使用Selenium Webdriver(Java)做到这一点?
#1 楼
请参阅“忽略ChromeDriver用户首选项”的答案。cOpt.AddUserProfilePreference("credentials_enable_service", false);
cOpt.AddUserProfilePreference("profile.password_manager_enabled", false);
评论
在我的设置中只需要凭据_启用_服务,但是很好的答案。
– Niels van Reijmersdal
17年4月7日在9:42
对于Selenium Java,不应接受此答案,因为ChromeOptions类上没有名为“ AddUserProfilePreference”的方法。
– Ryan J. McDonough
17年4月9日在23:35
这不是公认的答案,因为Chromedriver与语言无关。我是使用Codeception的PHP开发人员,可怜,可怜我。
–吉姆·马奎尔(Jim Maguire)
17年7月21日在18:29
#2 楼
在Java中:ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("--disable-web-security");
options.addArguments("--no-proxy-server");
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);
评论
从Selenium 3.3.1开始,在Java 8下使用selenium-chrome-driver 3.3.1起作用。感谢@Flavio Barisi,所有其他注释似乎都针对Java以外的其他语言。这可能应该是公认的答案。
– Ryan J. McDonough
17-4-9在23:36
#3 楼
Flavio Barisi所说的,加上传递给驱动程序的功能。ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(capabilities);
#4 楼
WebDriver无法与浏览器和/或OS特定的对话框进行交互。您可以在浏览器中手动进行以下更改以禁用对话框。选择“设置”菜单选项
单击“显示高级设置…”(在页面底部)
在“密码和表单”部分中,禁用“管理密码”。
勾选框。
评论
手动我可以做,但是我不知道如何在Selenium Web驱动程序中做。
–Ganeshselvan N
17 Mar 22 '17 at 13:56
恐怕这是不可能的。 WebDriver无法与浏览器和/或OS特定的对话框进行交互。
– ECiurleo
17 Mar 22 '17 at 14:24
有时它来了,有时它不来了。我不知道如何控制它
–Ganeshselvan N
17 Mar 23 '17 at 10:48
@ECiurleo由于某些原因,我已手动禁用了“管理密码”复选框中的“保存密码”选项。但仍然会在chrome打开时显示弹出窗口。
–suprinder
17年4月4日在3:07
这只是一半。它无法与元素交互,但是从其他答案中可以看出,它可以在启动前配置Chrome,以不显示它们:-)
–寡核苷酸
17年6月23日在12:39
#5 楼
这与最新的ChromeDriver搭配使用效果很好:_chrome.AddUserProfilePreference("credentials_enable_service", false);
评论
有趣的选择。您能否提供文档链接作为答案的一部分?
– ECiurleo
17年3月28日在10:19
#6 楼
在Ruby中:Capybara.register_driver :selenium do |app|
preferences = {credentials_enable_service: false,
password_manager_enabled: false}
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome
capabilities['chromeOptions'] = {'prefs' => preferences}
Capybara::Selenium::Driver.new(app, browser: :chrome,
desired_capabilities: capabilities)
end
#7 楼
在JavaScript中;import webdriver from 'selenium-webdriver';
import chrome from 'selenium-webdriver/chrome';
...
const driver = new webdriver
.Builder()
.usingServer(url)
.forBrowser('chrome')
.setChromeOptions(new chrome.Options().setUserPreferences({
"credentials_enable_service": false,
"profile.password_manager_enabled": false
}))
.build();
评论
最近,我已将chrome驱动程序更新为2.28版本。浏览器是您控制的浏览器,仅由套件使用吗?