В данной статье нас будет интересовать TestCase, который находится в collectionframeworkandselenium:
Этот тестовый класс сначала выполняет поиск на странице Google. После этого выводит список текстов всех ссылок на странице результата поиска. И в самом конце выводит список ссылок, которые использовались в тесте, т.е.- главной страницы Google и страницы результата поиска.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
package testclasses.collectionframeworkandselenium; import interfaceandinheritance.GoogleHomePage; import interfaceandinheritance.GoogleSearchResultPage; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import java.util.*; import java.util.concurrent.TimeUnit; /** * Selenium example with List, Set and Map. */ public class TestClass { public static void main(final String[] args) throws InterruptedException { // instantiate WebDriver WebDriver webDriver = new FirefoxDriver(); webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // Set collection of test URLs Set<String> urlSet = new HashSet<String>(); GoogleHomePage googleHomePage = new GoogleHomePage(webDriver); webDriver.get("http://www.google.com/"); // collection google home page URL String googleHomePageURL = webDriver.getCurrentUrl(); urlSet.add(googleHomePageURL); // print link text on google home page List<String> googleHomePageLinkTexts = googleHomePage.getGoogleHomePageLinkText(); System.out.println("###################################"); System.out.println("###################################"); System.out.println("Print google home page link text"); for (String linkText : googleHomePageLinkTexts) { System.out.println("link Text is: " + linkText); } // access google search result page from google home page GoogleSearchResultPage googleSearchResultPage = googleHomePage.search("selenium headquarter"); Thread.sleep(5000); // Very bad practice, never use sleep statements in your programs // collect URL for google search result page String googleSearchResultPageURL = webDriver.getCurrentUrl(); urlSet.add(googleSearchResultPageURL); // print link text on google search result page List<String> googleSRPLinkTexts = googleSearchResultPage.getGoogleSearchResultPageLinkText(); System.out.println("###################################"); System.out.println("###################################"); System.out.println("Print google search result page link text"); for (String linkText : googleSRPLinkTexts) { System.out.println("link Text is: " + linkText); } // create map of URL set Map<Integer, String> urlMap = new HashMap<Integer, String>(); int index = 0; for (String url : urlSet) { urlMap.put(index, url); index++; } // print test URLs for (Integer key : urlMap.keySet()) { System.out.println("key is: " + key); System.out.println("url value is: " + urlMap.get(key)); } // shutdown driver webDriver.close(); webDriver.quit(); } } |
Метод для отображения текста ссылок на странице поиска реализован в классе GoogleSearchResultPage:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * @return link name of all links on google home page */ public List<String> getGoogleHomePageLinkText() { List<String> linkTexts = new ArrayList<String>(); List<WebElement> linkElements = webDriver.findElements(By.tagName("a")); // findElements method to get // collection of WebElement for (WebElement element : linkElements) { String linkText = element.getText(); linkTexts.add(linkText); } return linkTexts; } } |
Разберем более подробно…
Для накопления ссылок изначально мы объявляем коллекцию Set:
1 |
Set<String> urlSet = new HashSet<String>(); |
Далее мы вносим в нее две ссылки – главной страницы Google:
1 |
urlSet.add(googleHomePageURL); |
И страницы результата поиска:
1 |
urlSet.add(googleSearchResultPageURL); |
HashMap используется только для того, чтобы продемонстрировать принцип работы этой коллекции “ключ-значение” и вывода результата в виде:
В методе getGoogleHomePageLinkText(), который имеет тип List<String> для того, чтобы вернуть список всех текстов ссылок, также объявляет список элементов типа WebElement – список ссылок. В дальнейшем, используя метод getText(), осуществляется взятие текста этих ссылок.
1 2 3 4 5 6 7 8 9 10 11 |
public List<String> getGoogleHomePageLinkText() { List<String> linkTexts = new ArrayList<String>(); List<WebElement> linkElements = webDriver.findElements(By.tagName("a")); // findElements method to get // collection of WebElement for (WebElement element : linkElements) { String linkText = element.getText(); linkTexts.add(linkText); } return linkTexts; } |