Как получить значение chromeOptions из возможностей удаленного веб-драйвера?

После запуска тестового прогона удаленный веб-драйвер инициализируется для заданных возможностей:

Ниже приведен журнал узла селена: [Здесь я устанавливаю некоторые параметры хрома]

19:16:08.245 INFO - Creating a new session for Capabilities [{browserName=chrome, takesScreenshot=true, chromeOptions={mobileEmulation={deviceMetrics={pixelRatio=2, width=768, height=1024}, userAgent=Mozilla/5.0 (iPad; CPU OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4}, args=[--ignore-certificate-errors, --disable-bundled-ppapi-flash, --disable-extensions, --disable-web-security, --always-authorize-plugins, --allow-running-insecure-content, --test-type, --enable-npapi], extensions=[]}, version=,platform=ANY}]

В зависимости от моего требования я могу установить параметры хрома в возможностях удаленного веб-драйвера. но не смог получить эти значения.

Мне нужно получить значения deviceMetrics и userAgent из нужных возможностей?

Я пробовал с::

String chromeoptions= ((RemoteWebDriver) driver).getCapabilities().getCapability(ChromeOptions.CAPABILITY);

Получение значения null в chromeoptions.


person Manibharathi Sundaram    schedule 22.12.2015    source источник


Ответы (1)


Я полагаю, что эту информацию невозможно получить с помощью метода getCapabilities(), поскольку

Capabilities actualCapabilities = ((RemoteWebDriver) driver).getCapabilities();
System.out.println("Capabilities: " + actualCapabilities.asMap());

Выход:

Capabilities: {platform=MAC, javascriptEnabled=true, acceptSslCerts=true, browserName=chrome, chrome={userDataDir=/var/folders/w7/jwwf8cq50mz5g3wdwhxgxgy80000gn/T/.org.chromium.Chromium.nh0o2Y}, rotatable=false, locationContextEnabled=true, mobileEmulationEnabled=true, webdriver.remote.sessionid=5622d7bc-9083-4f00-b852-e67cc885c818, version=47.0.2526.106, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, hasTouchScreen=true, applicationCacheEnabled=false, takesScreenshot=true}

Как видите, желаемой информации о deviceMetrics и userAgent нет.

Другой вариант попробовать (если вы можете выполнить Javascript):

mobileEmulation.put("deviceName", "Google Nexus 5");

...

driver.get("http://www.google.com");

...

JavascriptExecutor js = (JavascriptExecutor) driver;

long pixelRatio = (Long) js.executeScript("return window.devicePixelRatio");
long width = (Long) js.executeScript("return screen.width");
long height = (Long) js.executeScript("return screen.height");

String userAgent = (String) js.executeScript("return navigator.userAgent");

System.out.println("pixelRatio: " + pixelRatio);
System.out.println("width: " + width);
System.out.println("height: " + height);
System.out.println("userAgent: " + userAgent);

Выход:

pixelRatio: 3
width: 360
height: 640
userAgent: Mozilla/5.0 (Linux; Android 4.4.4; en-us; Nexus 5 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2307.2 Mobile Safari/537.36
person drets    schedule 22.12.2015
comment
Спасибо за быстрый ответ. Он отлично работает для пользовательского агента и соотношения пикселей, а не для ширины и высоты. кажется, что он принимает значение ширины и высоты браузера, вместо которого я упомянул в параметрах Chrome желаемые возможности (deviceMetrics). А также предложите мне любой другой способ определить ориентацию устройства в mobileEmulation. - person Manibharathi Sundaram; 22.12.2015
comment
Предостережение: вам нужно выполнить js, связанные с шириной и высотой, после перехода на какую-то страницу (поэтому я упомянул www.google.com в примере). - person drets; 22.12.2015
comment
да, я пробовал это после перехода на какую-то страницу. Все еще получаю неправильное значение ширины и высоты. - person Manibharathi Sundaram; 22.12.2015
comment
Ориентация устройства возможна в мобильной эмуляции? - person Manibharathi Sundaram; 22.12.2015
comment
Спасибо, ответ обновлен! По поводу дополнительных вопросов - погуглите или задайте новый вопрос - спасибо за понимание. - person drets; 22.12.2015
comment
может принимать точные значения ширины и высоты с помощью js: long width = (Long) js.executeScript(return screen.width); длинная высота = (длинная) js.executeScript (return screen.height); извините, прежде чем я попробовал ширину window.innerWidth и windows.innerHeight - person Manibharathi Sundaram; 23.12.2015