Advertisement
julia_v_iluhina

Untitled

Nov 3rd, 2016
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.75 KB | None | 0 0
  1. http://pastebin.com/n01iFN0V
  2. public class BasePage {
  3.  
  4.     public static final String BASE_URL_PROD = "https://productionsite/";
  5.     public static final String BASE_URL_STAGE = "https://stagingsite/";
  6.     public static final String BASE_URL = BASE_URL_STAGE;
  7.  
  8.     WebDriver driver = getWebDriver();
  9. }
  10. /*
  11.     судя по всему - предок пейдж-объекта (PageObject)
  12.     на курсе дальше будем рассматривать это
  13.  
  14.     надо смотреть на наследников этого класса, чтобы как-то прокомментировать работу с пейджами
  15.     скорей всего, для заявленного вопроса этого и не требуется
  16.  
  17.     также этот класс используется как контейнер для констант - нужные вам урлы
  18.     стоит ли это делать в рамках предка пейджей - еще вопрос...
  19.     но это к твоему вопросу тоже не имеет никакого отношения
  20.  
  21.     то же самое насчет переменной driver
  22.     только по увиденному - сложно сказать, насколько она нужна
  23.     и для чего нужно было делать именно так
  24. */
  25.  
  26. ****************
  27. http://pastebin.com/cFq4kniq
  28.  
  29. ...
  30. public class BaseTest {
  31.  
  32.     public static final String USERNAME = "login";
  33.     public static final String PASSWORD = "pass";
  34.  
  35.     public static final String DEFAULT_BROWSER = "chrome";
  36.  
  37.     @Before
  38.     public void setup(){
  39.         Configuration.browser = CustomWebDriverProvider.class.getName();
  40.         Configuration.baseUrl = BasePage.BASE_URL;
  41.     }
  42.  
  43.     private static class CustomWebDriverProvider implements WebDriverProvider {
  44.         @Override
  45.         public WebDriver createDriver(DesiredCapabilities capabilities) {
  46.             // prepare Authentication token
  47.             byte[] token = Base64.encodeBase64((USERNAME + ":" + PASSWORD).getBytes());
  48.  
  49.             // start the proxy
  50.             BrowserMobProxyServer proxy = new BrowserMobProxyServer();
  51.             proxy.addHeader("Authorization", "Basic " + new String(token));
  52.             proxy.start(0);
  53.  
  54.             // get the Selenium proxy object
  55.             Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
  56.  
  57.             // configure it as a desired capability
  58.             capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
  59.  
  60.             WebDriver driver = new ChromeDriver(capabilities);
  61.             if (DEFAULT_BROWSER.equalsIgnoreCase("firefox")) {
  62.                 driver = new FirefoxDriver(capabilities);
  63.             }
  64.             else if (DEFAULT_BROWSER.equalsIgnoreCase("IE")) {
  65.                 driver = new InternetExplorerDriver(capabilities);
  66.             }
  67.             return driver;
  68.         }
  69.     }
  70. }
  71. /*
  72.     Selenide позволяет создавать вебдрайвер с нужным тебе профайлом (как-то не стандартно)
  73.     об этом можно почитать
  74.     https://github.com/codeborne/selenide/wiki/How-Selenide-creates-WebDriver#how-to-run-selenide-with-custom-profile
  75.  
  76.     собственно, сделано ровно так, как описано в документации
  77.  
  78.      объявлен класс CustomWebDriverProvider, который имплементирует интерфейс WebDriverProvider
  79.      в нем - реализован метод этого интерфейса - createDriver
  80.  
  81.      и в @Before-методе (метод вызывается перед запуском каждого тест-метода)
  82.      в установлена настройка  Configuration.browser = этому классу (по линке выше - это делается из командогй строки,
  83.      а в вашем коде - прописывается прямо в коде)
  84.      это я про строчку
  85.      Configuration.browser = CustomWebDriverProvider.class.getName()
  86.  
  87.      что есть @Before-метод - тоже будет на курсе
  88.      сейчас можешь чуть почитать тут
  89.      http://junit.sourceforge.net/javadoc/org/junit/Before.html
  90.  
  91.      настройка
  92.      Configuration.baseUrl - это вот что
  93.      http://selenide.org/javadoc/3.8/com/codeborne/selenide/Configuration.html#baseUrl
  94.      при вызове open() без параметров - будет открываться указанный урл
  95.  
  96.  
  97.      теперь про то, что мы делаем в методе
  98.  
  99.      сравнительно просто про browsermob-proxy
  100.      http://automated-testing.info/t/chto-takoe-browsermob-proxy-i-kak-zastavit-ego-rabotat-tutorial-dlya-nachinayushhih-primer-ispolzovaniya-na-python/3510
  101.  
  102.      отличная, но и более сложная статья
  103.      http://internetka.in.ua/browsermobproxy-selenium-perfomance/
  104.      Вот как раз тут Татьяна и пишет -
  105.      Также довольно часто BrowserMob используется для автоматизации доступа к сайтам, требующим Basic авторизацию.
  106.      описано - как это подключается в проекте и как создается вебдрайвер, с учетом использования browsermob-proxy
  107.  
  108.      вот еще крутой автор - Алексей Баранцев.
  109.      В статье - еще и видео, и примеры кода
  110.      https://habrahabr.ru/post/209752/
  111.      лучше и подробнее - вряд ли расскажу, на видео где-то с 13-33 - про аутентификацию речь)
  112.      ты учитывай, что Алексей показывает это для чистого селениума
  113.      многое и тут из показанного пригодится, но не один-в один
  114.      (в Selenide - мы создаем вебдрайвер таким способом - как это требует сам Selenide
  115.      выше приводила линку
  116.      но само создание = реализация createDriver
  117.      уже такое как в селениуме)
  118.  
  119.      очень может быть - многие вещи станут полностью понятными дальше по курсу
  120.      некоторые - после середины первой части курса
  121.      некоторые - где-то после середины второй части курса
  122.  
  123.      сейчас надо вынести основные идеи + общее понимание - для чего присланный тобой код служит
  124.  
  125.      Посмотри на реализованные в проекте тест-классы
  126.      Наверняка они наследуются от BaseTest
  127.      и это обеспечивает в рамках таких тест-классов при открытии нужных вам урлов - делать аутентификацию
  128.      благодаря реализации с использованием browsermob-proxy
  129.      
  130.      Т е - твоя задача - точно также наследоваться от  этого же BaseTest при создании своих тест-классов
  131.      соответственно - работай в рамках того же проекта, где BaseTest и тест-классы уже реализованы
  132.      а приведенные тобой классы и их логика - окажутся под капотом = under the hood    
  133.  
  134. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement