Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用移动仿真(Java)的同时向ChromeDriver添加参数?_Java_Selenium_Selenium Chromedriver - Fatal编程技术网

如何在使用移动仿真(Java)的同时向ChromeDriver添加参数?

如何在使用移动仿真(Java)的同时向ChromeDriver添加参数?,java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,我在JUnit/Selenium测试中使用ChromeDriver。我对台式机和移动设备都有测试 对于我的桌面测试,我指定了几个参数,以确保测试结果一致,如下所示: DesiredCapabilities capabilities = DesiredCapabilities.chrome(); ChromeOptions desktopOptions = new ChromeOptions(); desktopOptions.addArguments("start-maximized", "d

我在JUnit/Selenium测试中使用ChromeDriver。我对台式机和移动设备都有测试

对于我的桌面测试,我指定了几个参数,以确保测试结果一致,如下所示:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions desktopOptions = new ChromeOptions();

desktopOptions.addArguments("start-maximized", "disable-extensions",
    "test-type", "no-default-browser-check", "ignore-certificate-errors");

capabilities.setCapability(ChromeOptions.CAPABILITY, desktopOptions);
driver = new RemoteWebDriver(service.getUrl(), capabilities);
对于我当前使用的移动测试:

Map<String, String> mobileEmulation = new HashMap<String, String>();
mobileEmulation.put("deviceName", "Apple iPhone 6");

Map<String, Object> mobileOptions = new HashMap<String, Object>();
mobileOptions.put("mobileEmulation", mobileEmulation);

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, mobileOptions);
driver = new RemoteWebDriver(service.getUrl(), capabilities);
Map mobileEmulation=new HashMap();
mobileEmulation.put(“deviceName”、“苹果iPhone 6”);
Map mobileOptions=new HashMap();
mobileOptions.put(“mobileEmulation”,mobileEmulation);
DesiredCapabilities=DesiredCapabilities.chrome();
能力。设置能力(ChromeOptions.CAPABILITY,mobileOptions);
driver=新的RemoteWebDriver(service.getUrl(),功能);
我看不到为我的移动测试包含参数的方法(例如“禁用扩展”)

是否有任何方法可以重构mobile方法以允许指定参数

编辑:更清楚一点-我想做如下事情:

        Map<String, String> mobileEmulation = new HashMap<String, String>();
        mobileEmulation.put("deviceName", deviceType);

        Map<String, Object> mobileOptions = new HashMap<String, Object>();
        mobileOptions.put("mobileEmulation", mobileEmulation);

        ChromeOptions chromeArgs = new ChromeOptions();
        chromeArgs.addArguments("disable-extensions",
                "test-type", "no-default-browser-check", "ignore-certificate-errors");

        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setCapability(ChromeOptions.CAPABILITY, mobileOptions);
        capabilities.setCapability(ChromeOptions.CAPABILITY, chromeArgs);
        driver = new RemoteWebDriver(service.getUrl(), capabilities);
Map mobileEmulation=new HashMap();
mobileEmulation.put(“deviceName”,deviceType);
Map mobileOptions=new HashMap();
mobileOptions.put(“mobileEmulation”,mobileEmulation);
ChromeOptions chromeArgs=新的ChromeOptions();
chromeArgs.addArguments(“禁用扩展”),
“测试类型”、“无默认浏览器检查”、“忽略证书错误”);
DesiredCapabilities=DesiredCapabilities.chrome();
能力。设置能力(ChromeOptions.CAPABILITY,mobileOptions);
能力。设置能力(色度选项。能力,色度搜索);
driver=新的RemoteWebDriver(service.getUrl(),功能);

但是这些功能会相互覆盖。

可能您可以这样做:

capabilities.setCapability("chrome.switches", Arrays.asList("--disable-extensions"));
这里有一个类似的答案

得到了一个解决方案=)

(感谢chromedriver用户谷歌集团):

DesiredCapabilities=DesiredCapabilities.chrome();
Map mobileEmulation=new HashMap();
mobileEmulation.put(“deviceName”、“苹果iPhone 6”);
Map mobileOptions=new HashMap();
mobileOptions.put(“mobileEmulation”,mobileEmulation);
mobileOptions.put(“args”),Arrays.asList(“禁用扩展”,
“测试类型”、“无默认浏览器检查”、“忽略证书错误”);
能力。设置能力(ChromeOptions.CAPABILITY,mobileOptions);
driver=新的RemoteWebDriver(service.getUrl(),功能);
对ChromeOptions使用setExperimentalOption()方法 ChromeOptions提供了一种方法。这允许您设置许多选项,包括已设置的
mobileEmulation
参数

将代码放在一起,可以使用以下方法:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions chromeOptions= new ChromeOptions();

chromeOptions.addArguments("start-maximized", "disable-extensions",
"test-type", "no-default-browser-check", "ignore-certificate-errors");

Map<String, String> mobileEmulation = new HashMap<String, String>();
mobileEmulation.put("deviceName", "Apple iPhone 6");
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);

capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
driver = new RemoteWebDriver(service.getUrl(), capabilities);
DesiredCapabilities=DesiredCapabilities.chrome();
ChromeOptions ChromeOptions=新的ChromeOptions();
addArguments(“开始最大化”、“禁用扩展”),
“测试类型”、“无默认浏览器检查”、“忽略证书错误”);
Map mobileEmulation=new HashMap();
mobileEmulation.put(“deviceName”、“苹果iPhone 6”);
色度选项。设置实验选项(“移动模拟”,移动模拟);
能力。设置能力(ChromeOptions.CAPABILITY,ChromeOptions);
driver=新的RemoteWebDriver(service.getUrl(),功能);

不幸的是,它不适合:capabilities.setCapability(ChromeOptions.CAPABILITY,mobileOptions);因为我需要传递mobileEmulation值和参数。
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions chromeOptions= new ChromeOptions();

chromeOptions.addArguments("start-maximized", "disable-extensions",
"test-type", "no-default-browser-check", "ignore-certificate-errors");

Map<String, String> mobileEmulation = new HashMap<String, String>();
mobileEmulation.put("deviceName", "Apple iPhone 6");
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);

capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
driver = new RemoteWebDriver(service.getUrl(), capabilities);