Wednesday, September 21, 2011

Selenium 2.0 (Webdriver) How To with Java + Eclipse



Так как Selenium сейчас очень активно развивается, перед началом работы, необходимо скачать последнию версию с официального сайта. Для работы с Selenium 2.0 (WebDriver) нет необходимости в его отельном запуске как это было ранее. Создавая новый проект, в Eclipse в свойствах проекта нужно добавить путь к jar-файлу.



Для проверки присутствия элементов на веб-странице в Selenium RC (1.0) есть метод selenium.isElementPresent(). Для WebDriver аналогично можно использовать метод findElement(), который генерирует исключение NoSuchElementException, если элемент отсутсвтует на странице:

public static boolean isElementPresent(WebDriver driver, By by) { 
  try { 
    driver.findElement(by); 
    return true;  // Success! 
  } catch (NoSuchElementException ignored) { 
    return false; 
  } 

}


//Example 1:
package org.openqa.selenium.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class Example  {
    public static void main(String[] args) {
        // Create a new instance of the html unit driver
        // Notice that the remainder of the code relies on the interface, 
        // not the implementation.
        WebDriver driver = new HtmlUnitDriver();

        // And now use this to visit Google
        driver.get("http://www.google.com");

        // Find the text input element by its name
        WebElement element = driver.findElement(By.name("q"));

        // Enter something to search for
        element.sendKeys("Cheese!");

        // Now submit the form. WebDriver will find the form for us from the element
        element.submit();

        // Check the title of the page
        System.out.println("Page title is: " + driver.getTitle());
    }
}


//Example 2:

package org.openqa.selenium.example;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class GoogleSuggest {
    public static void main(String[] args) throws Exception {
        // The Firefox driver supports javascript 
        WebDriver driver = new FirefoxDriver();
        
        // Go to the Google Suggest home page
        driver.get("http://www.google.com/webhp?complete=1&hl=en");
        
        // Enter the query string "Cheese"
        WebElement query = driver.findElement(By.name("q"));
        query.sendKeys("Cheese");

        // Sleep until the div we want is visible or 5 seconds is over
        long end = System.currentTimeMillis() + 5000;
        while (System.currentTimeMillis() < end) {
            WebElement resultsDiv = driver.findElement(By.className("gac_m"));

            // If results have been returned, the results are displayed in a drop down.
            if (resultsDiv.isDisplayed()) {
              break;
            }
        }

        // And now list the suggestions
        List<WebElement> allSuggestions = driver.findElements(By.xpath("//td[@class='gac_c']"));
        
        for (WebElement suggestion : allSuggestions) {
            System.out.println(suggestion.getText());
        }
     }
}

Source: http://code.google.com

Top Ten Programming Books


  1. Code Complete («Совершенный код»), второе издание. Steve McConnell 
  2. The Pragmatic Programmer: From Journeyman to Master («Программист-прагматик: от подмастерья к мастеру»), второе издание. Andrew Hunt, David Thomas (Эндрю Хант и Дэвид Томас)
  3. Structure and Interpretation of Computer Programs («Структура и интерпретация компьютерных программ»), второе издание. Harold Abelson, Gerald J Sussman, Julie Sussman (Гарольд Абельсон, Джеральд Суссман и Джули Суссман)
  4. The C Programming Language («Язык программирования Си»), второе издание. Brian W Kernighan и Dennis M Ritchie (Брайн Керниган и Деннис Ритчи)
  5. Introduction to Algorithms («Введение в алгоритмы»). Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest и Clifford Stein (Томас Кормэн, Чарльз Лейзерсон, Рональд Ривест и Клиффорд Штайн)
  6. Refactoring: Improving the Design of Existing Code («Рефакторинг: улучшение существующего кода»). Martin Fowler, Kent Beck, John Brant и William Opdyke (Мартин Фаулер, Кент Бек, Джон Брант и Вильям Опдайк)
  7. Design Patterns: Elements of Reusable Object-Oriented Software («Шаблоны проектирования: Элементы повторно используемого объектно-ориентированного программного обеспечения»). Erich Gamma, Richard Helm, Ralph Johnson и John Vlissides (Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес (также известные как " Банда четырех ")
  8. The Mythical Man-Month: Essays on Software Engineering («Мифический человеко-месяц, или Как создаются программные системы»). Frederick P. Brooks (Фредерик П. Брукс)
  9. Art of Computer Programming, Volume 1: Fundamental Algorithms («Искусство программирования, том 1: основные алгоритмы»), третье издание. Donald E. Knuth (Дональд Кнут)
  10. Compilers: Principles, Techniques, and Tools («Компиляторы: принципы, технологии и инструменты»), 2-е издание. Alfred V. Aho, Monica S. Lam, Ravi Sethi и Jeffrey D. Ullman (Альфред В. Ахо , Моника С. Лам , Рави Сети и Джеффри Д. Ульман)