【发布时间】:2016-11-01 06:29:08
【问题描述】:
我正在尝试以移动仿真模式启动 chrome,并且还想在启动之前设置用户代理。我已经找到了一次执行此操作的方法,但无法同时针对同一 chrome 实例执行此操作。 以下是我的代码:
String useragent="Mozilla/5.0 (Windows NT 6.1\\; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 WFBTesting";
Map<String, String> mobileEmulation = new HashMap<String, String>();
mobileEmulation.put("deviceName", "Google Nexus 5");
Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("mobileEmulation", mobileEmulation);
ChromeOptions options = new ChromeOptions();
options.addArguments("--user-agent="+useragent);
options.addArguments("--test-type");
options.addArguments("--allow-running-insecure-content");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
//capabilities.setCapability(ChromeOptions.CAPABILITY,(chromeOptions));
capabilities.setCapability(ChromeOptions.CAPABILITY,options);
WebDriver driver = new ChromeDriver(capabilities);
在上面的代码中,我可以在“capabilities.setCapability(ChromeOptions.CAPABILITY,options);”中传递选项或 chromeOptions但是如果编写两个 setCapability 方法,一个带有选项,另一个带有 chromeOptions,则只有一个对启动的 chrome 会话有效,而不是两者都有效。请建议设置功能和启动 chrome 会话的最佳方式。
编辑 正如建议的那样,我尝试了以下操作: 感谢@Cyildirim 再次回复您。这次我在脚本中使用了以下代码:
Map<String, String> mobileEmulation = new HashMap<String, String>();
mobileEmulation.put("deviceName", "Google Nexus 5");
Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("args", Arrays.asList("user-agent=Mozilla/5.0 (Windows NT 6.1\\; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 WFBTesting","test-type","allow-running-insecure-content"));
chromeOptions.put("mobileEmulation", mobileEmulation);DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY,(chromeOptions));
但即使使用上述方法,我也无法正确设置用户配置文件。只有移动仿真功能正在设置。如果我在数组中错误地编写用户代理,你能纠正我吗?或任何其他使它起作用的建议。
【问题讨论】:
标签: java google-chrome selenium