Когда я задал этот вопрос, я не понял различия между объектами Selenium и объектами WebDriver. Несмотря на то, что я специально пытался узнать о функции «WebDriver» от Selenium 2, я с глупостью подумал, что могу написать проект «Selenium 2 Webdriver» с объектами Selenium 2. Это может показаться очевидным для тех, кто имеет опыт работы с этими инструментами, но это различие все еще не явилось в моем сознании после прочтения книг и проектной документации «Selenium 2».
В результате я писал код Java, чтобы создать экземпляр объекта Selenium для изучения веб-страницы и попытаться передать объект Selenium объекту WebDriver в надежде, что тест будет выполняться на удаленном сервере.
Теперь кажется яснее: проекты Selenium и WebDriver слились в новый зонтичный проект, названный (смущающий) Selenium 2.0, но они являются отдельными и отдельными инструментами в Selenium 2. Если я хочу использовать API WebDriver, кажется, что я должен преобразовать любые существующие объекты Selenium для объектов WebDriver. Кажется, что нет никакого полезного взаимодействия между этими двумя инструментами.
Например, в моем проекте у меня был следующий код. Он отлично работает на веб-браузере локальной настольной системы:
Selenium selenium = new DefaultSelenium(host, port, browser, baseurl);
selenium.get(urlPath);
selenium.type(username_field, username);
selenium.type(password_field, password);
selenium.click(login_button);
Но я хочу иметь возможность запускать этот тест на безголовом сервере непрерывной интеграции, а не в моей настольной системе. Я преобразовал код для использования объекта WebDriver вместо объекта Selenium. Теперь он запускается на удаленной системе, подключенной к серверу Selenium Grid 2:
WebDriver driver = new RemoteWebDriver(new URL("http://10.0.0.29:4444/wd/hub"), capability);
driver.get(urlPath);
driver.findElement(By.name(username_field)).sendKeys(username);
driver.findElement(By.name(password_field)).sendKeys(password);
driver.findElement(By.className(login_button)).submit();
Я надеюсь, что другие люди, желающие узнать, как использовать WebDriver в Selenium 2, не будут тратить столько времени, сколько я читал о объектах Selenium, думая, что объект Selenium является частью WebDriver. Мой текущий [n00b] совет - игнорировать все, что упоминает объекты Selenium, и сосредоточиться исключительно на том, чтобы узнать как можно больше о объектах WebDriver. Хорошим местом для начала является документация WebDriver на SeleniumHQ.org:
Как А.J. предложенный в его ответе, также взгляните на документацию Selenium Grid:
И PS: удаленный экземпляр Selenium 2 Webdriver автоматически принимает недоверенные сертификаты SSL/TLS по умолчанию. Не требуется код.