Каково значение System.setProperty () при работе с Selenium - PullRequest
0 голосов
/ 03 февраля 2019

В селене, почему мы добавляем System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe"); в блоке static{}?

public class Demo{
static{
System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe");
}
  public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();              
        driver.get("http://www.google.com");

    }
}

1 Ответ

0 голосов
/ 04 февраля 2019

При работе с клиентом Selenium-Java сама платформа Java использует объект Properties для поддержки своей собственной конфигурации.Класс System поддерживает объект Properties , который описывает конфигурацию текущей рабочей среды.Системные свойства включают информацию о текущем пользователе , текущей версии среды выполнения Java , символе , используемом для разделения компонентов имени пути к файлу и т. Д.

Следующая таблица описывает некоторые наиболее важные свойства системы:

Java_SystemProperties

Вопросы безопасности : доступ к системным свойствам может быть ограничен Security Manager .Это чаще всего проблема в апплетах, которые не могут читать некоторые системные свойства и записывать какие-либо системные свойства.Подробнее о доступе к системным свойствам в апплетах см. Системные свойства в Как сделать больше с помощью богатых интернет-приложений на Java урок.


Система чтенияСвойства

Класс System имеет два метода, используемых для чтения системных свойств: getProperty и getProperties.

Класс System имеет дваразные версии getProperty.Оба получают значение свойства, указанного в списке аргументов.Более простой из двух getProperty методов принимает один аргумент - ключ свойства. Например, чтобы получить значение path.separator, используйте следующий оператор:

System.getProperty("path.separator");

Метод getProperty возвращаетстрока, содержащая значение свойства.Если свойство не существует, эта версия getProperty возвращает значение NULL.

Другая версия getProperty требует два аргумента String: первый аргумент является ключом для поиска, а второй аргумент является значением по умолчаниюВозвращаемое значение, если ключ не может быть найден или если он не имеет значения.Например, следующий вызов getProperty ищет свойство System с именем subliminal.message.Это недопустимое системное свойство, поэтому вместо возврата null этот метод возвращает значение по умолчанию, указанное в качестве второго аргумента: «Selenium WebDriver!»

System.getProperty("subliminal.message", "Selenium WebDriver!");

Последний метод, предоставленный системой Класс для доступа к значениям свойств - это метод getProperties, который возвращает объект Properties.Этот объект содержит полный набор определений системных свойств.

A Java программа для извлечения Системные свойства :

  • Блок кода:

    package Java_Experiments;
    
    public class system_getProperty {
    
        public static void main(String[] args) {
    
            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            System.out.println(System.getProperty("webdriver.chrome.driver"));
            System.out.println(System.getProperty("subliminal.message", "Selenium WebDriver!"));
            System.out.println("Java Runtime Environment version: "+System.getProperty("java.version"));
            System.out.println("Java Runtime Environment vendor: "+System.getProperty("java.vendor"));
            System.out.println("Java vendor URL: "+System.getProperty("java.vendor.url"));
            System.out.println("Java installation directory: "+System.getProperty("java.home"));
            System.out.println("Java Virtual Machine specification version: "+System.getProperty("java.vm.specification.version"));
            System.out.println("Java Virtual Machine specification vendor: "+System.getProperty("java.vm.specification.vendor"));
            System.out.println("Java Virtual Machine specification name: "+System.getProperty("java.vm.specification.name"));
            System.out.println("Java Virtual Machine implementation version: "+System.getProperty("java.vm.version"));
            System.out.println("Java Virtual Machine implementation vendor: "+System.getProperty("java.vm.vendor"));
            System.out.println("Java Virtual Machine implementation name: "+System.getProperty("java.vm.name"));
            System.out.println("Java Runtime Environment specification version: "+System.getProperty("java.specification.version"));
            System.out.println("Java Runtime Environment specification vendor: "+System.getProperty("java.specification.vendor"));
            System.out.println("Java Runtime Environment specification name: "+System.getProperty("java.specification.name"));
            System.out.println("Java class format version number: "+System.getProperty("java.class.version"));
            System.out.println("Java class path: "+System.getProperty("java.class.path"));
            System.out.println("List of paths to search when loading libraries: "+System.getProperty("java.library.path"));
            System.out.println("Default temp file path: "+System.getProperty("java.io.tmpdir"));
            System.out.println("Name of JIT compiler to use: "+System.getProperty("java.compiler"));
            System.out.println("Path of extension directory or directories: "+System.getProperty("java.ext.dirs"));
            System.out.println("Operating system name: "+System.getProperty("os.name"));
            System.out.println("Operating system architecture: "+System.getProperty("os.arch"));
            System.out.println("Operating system version: "+System.getProperty("os.version"));
            System.out.println("File separator: "+System.getProperty("file.separator"));
            System.out.println("Path separator: "+System.getProperty("path.separator"));
            System.out.println("Line separator: "+System.getProperty("line.separator"));
            System.out.println("User's account name: "+System.getProperty("user.name"));
            System.out.println("User's home directory: "+System.getProperty("user.home"));
            System.out.println("User's current working directory: "+System.getProperty("user.dir"));
        }
    }
    
  • Консольный вывод:

    C:\Utility\BrowserDrivers\chromedriver.exe
    Selenium WebDriver!
    Java Runtime Environment version: 1.8.0_172
    Java Runtime Environment vendor: Oracle Corporation
    Java vendor URL: http://java.oracle.com/
    Java installation directory: C:\Program Files\Java\jre1.8.0_172
    Java Virtual Machine specification version: 1.8
    Java Virtual Machine specification vendor: Oracle Corporation
    Java Virtual Machine specification name: Java Virtual Machine Specification
    Java Virtual Machine implementation version: 25.172-b11
    Java Virtual Machine implementation vendor: Oracle Corporation
    Java Virtual Machine implementation name: Java HotSpot(TM) 64-Bit Server VM
    Java Runtime Environment specification version: 1.8
    Java Runtime Environment specification vendor: Oracle Corporation
    Java Runtime Environment specification name: Java Platform API Specification
    Java class format version number: 52.0
    Java class path: C:\Users\AtechM_03\LearnAutmation\learn-automation\bin;C:\Utility\log4j-1.2.15.jar\log4j-1.2.15.jar;C:\Utility\Sikuli\sikulixapi.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\poi-3.15.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\poi-examples-3.15.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\poi-excelant-3.15.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\poi-ooxml-3.15.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\poi-ooxml-schemas-3.15.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\poi-scratchpad-3.15.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\ooxml-lib\curvesapi-1.04.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\ooxml-lib\xmlbeans-2.6.0.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\lib\commons-codec-1.10.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\lib\commons-collections4-4.1.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\lib\commons-logging-1.2.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\lib\junit-4.12.jar;C:\Utility\poi-bin-3.15-20160924\poi-3.15\lib\log4j-1.2.17.jar;C:\Utility\Zip4j_1.3.2\zip4j_1.3.2.jar;C:\Utility\PhantomjsDriver1.1.0\phantomjsdriver-1.4.4.jar;C:\Utility\tess4j_jar_files\commons-beanutils-1.9.2.jar;C:\Utility\tess4j_jar_files\commons-collections-3.2.1.jar;C:\Utility\tess4j_jar_files\commons-io-2.6.jar;C:\Utility\tess4j_jar_files\commons-logging-1.2.jar;C:\Utility\tess4j_jar_files\fontbox-2.0.9.jar;C:\Utility\tess4j_jar_files\ghost4j-1.0.1.jar;C:\Utility\tess4j_jar_files\itext-2.1.7.jar;C:\Utility\tess4j_jar_files\jai-imageio-core-1.4.0.jar;C:\Utility\tess4j_jar_files\jbig2-imageio-3.0.0.jar;C:\Utility\tess4j_jar_files\jboss-logging-3.1.4.GA.jar;C:\Utility\tess4j_jar_files\jboss-vfs-3.2.12.Final.jar;C:\Utility\tess4j_jar_files\jcl-over-slf4j-1.7.25.jar;C:\Utility\tess4j_jar_files\jna-4.1.0.jar;C:\Utility\tess4j_jar_files\jul-to-slf4j-1.7.25.jar;C:\Utility\tess4j_jar_files\lept4j-1.9.4.jar;C:\Utility\tess4j_jar_files\log4j-1.2.17.jar;C:\Utility\tess4j_jar_files\log4j-over-slf4j-1.7.25.jar;C:\Utility\tess4j_jar_files\logback-classic-1.2.3.jar;C:\Utility\tess4j_jar_files\logback-core-1.2.3.jar;C:\Utility\tess4j_jar_files\pdfbox-2.0.9.jar;C:\Utility\tess4j_jar_files\pdfbox-debugger-2.0.9.jar;C:\Utility\tess4j_jar_files\pdfbox-tools-2.0.9.jar;C:\Utility\tess4j_jar_files\slf4j-api-1.7.25.jar;C:\Utility\tess4j_jar_files\tess4j-4.0.2.jar;C:\Utility\tess4j_jar_files\xmlgraphics-commons-1.4.jar;C:\Utility\ashot-1.5.x\ashot-1.4.4.jar;C:\Utility\selenium-server-standalone\selenium-server-standalone-3.14.0.jar;D:\SeleniumJavaUtilities\WebDriverReleases\htmlUnitDriver\htmlunit-driver-2.33.0-jar-with-dependencies.jar;D:\SeleniumJavaUtilities\Shutterbug\selenium-shutterbug-0.9.jar
    List of paths to search when loading libraries: C:\Program Files\Java\jre1.8.0_172\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_172/bin/server;C:/Program Files/Java/jre1.8.0_172/bin;C:/Program Files/Java/jre1.8.0_172/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Utility\BrowserDrivers;C:\Python\Scripts\;C:\Python\;C:\Windows\System32;C:\apache-maven-3.3.3\bin;C:\apache-ant-1.10.1\bin;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\nodejs\;C:\Program Files (x86)\MySQL\MySQL Utilities 1.6\;C:\Program Files\Git\cmd;C:\Users\AtechM_03\node_modules\mocha;C:\Utility\BrowserDrivers;C:\Program Files\Java\jdk1.8.0_172\bin;C:\Windows\System32;C:\Users\AtechM_03\AppData\Roaming\npm;C:\Users\AtechM_03\Desktop;;.
    Default temp file path: C:\Users\ATECHM~1\AppData\Local\Temp\
    Name of JIT compiler to use: null
    Path of extension directory or directories: C:\Program Files\Java\jre1.8.0_172\lib\ext;C:\Windows\Sun\Java\lib\ext
    Operating system name: Windows 8
    Operating system architecture: amd64
    Operating system version: 6.2
    File separator: \
    Path separator: ;
    Line separator: 
    
    User's account name: AtechM_03
    User's home directory: C:\Users\AtechM_03
    User's current working directory: C:\Users\AtechM_03\LearnAutmation\learn-automation
    

Запись системных свойств

Для изменениясуществующий набор системных свойств, используйте System.setProperties.Этот метод принимает объект Properties, который был инициализирован, чтобы содержать свойства, которые должны быть установлены.Этот метод заменяет весь набор системных свойств новым набором, представленным объектом Properties.

Примечание : изменение системных свойств потенциально опасно и должно выполняться по усмотрению,Многие системные свойства не перечитываются после запуска и используются в информационных целях.Изменение некоторых свойств может иметь неожиданные побочные эффекты.

Метод setProperties изменяет набор системных свойств для текущего запущенного приложения.Эти изменения не являются постоянными.То есть изменение системных свойств в приложении не повлияет на будущие вызовы интерпретатора Java для этого или любого другого приложения.Система выполнения повторно инициализирует системные свойства при каждом запуске.Если изменения в системных свойствах должны быть постоянными, то приложение должно записать значения в некоторый файл перед выходом и снова прочитать их при запуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...