如何使用Java在Selenium中设置多个所需功能?

时间:2016-11-01 06:29:08

标签: java google-chrome selenium

我正在尝试在移动仿真模式下启动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);

在上面的代码中,我可以在&#34; capabilities.setCapability(ChromeOptions.CAPABILITY,选项)中传递选项或chromeOptions;&#34;但如果使用选项和其他使用chromeOptions编写两个setCapability方法,则只有其中一个对启动的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));

但即使使用上面我也无法正确设置用户配置文件。仅设置了移动仿真功能。如果我在Array中错误地编写useragent,你能纠正我吗?或任何其他建议使其发挥作用。

1 个答案:

答案 0 :(得分:1)

你试过设置它们吗?

capabilities.setCapability(ChromeOptions.CAPABILITY,chromeOptions);
capabilities.setCapability(ChromeOptions.CAPABILITY,options);