2016-03-16 6 views
2

Мне нужно запустить код JELA Selenium в текущем окне Firefox. Но когда я начну свой код, WebDriver driver = new FirefoxDriver(); откроет новое окно! Не нужно открывать новое окно! В коде Selenium IDE работает в текущем окне браузера.Как я могу запустить Selenium в текущем окне Firefox? Без открытия нового окна

package tm.csgo; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class Item { 

public String siteUrl; 
public String url; 
public String name; 
public int bought; 
public int needCount; 
public int wantPrice; 
public double price; 

public void buyProcess() { 

    System.out.println("Начало покупки, запуск браузера..."); 
    System.out.println("Запланировано приобрести " + needCount + " " + name + " предметов."); 

    WebDriver driver = new FirefoxDriver(); 


    while(bought <= needCount){ 

     System.out.println("Приобретаем " + bought + " предмет"); 
     driver.get(siteUrl + url); 
     price = Double.parseDouble(driver.findElement(By.className("ip-bestprice")).getText()); 

     System.out.println("Стоимость предмета " + name + ": " + price + " рублей"); 

     if (price <= wantPrice) { 

      System.out.println("Покупаем " + name + "..."); 
      driver.findElement(By.cssSelector("a.buy-pic-button")).click(); 
      driver.findElement(By.id("info_dialog_url")).click(); 

     } else { 
      continue; 
      } 

     System.out.println("Приобретён " + bought + " предмет за " + price + " рублей из " + needCount + " запланированных предметов"); 
     bought++; 
    } 

} 

public void purchaseReady() { 
    //дописать общую сумму затрат 
    System.out.println("Приобретено предметов на сумму ..."); 
    System.out.println("Покупка успешно завершена!"); 
} 

}

+0

Какую версию селена вы используете? Это возможно как с WebDriver, так и с Selenium2. Однако не уверен в других версиях. – Brian

+0

Последние версии Selenium и Java. – GoldenScrew

+0

2.53 возможно? – GoldenScrew

ответ

0

В моем случае я использую Selenium с JUnit для выполнения отдельных тестов. Здесь в основном архитектура:

  1. У меня есть одноэлементный класс контекста, который создает экземпляр Selenium WebDriver, в зависимости от браузера. В рамках реализации я проверяю, webDriver = null;. Для браузера if (browser == Browser.IE) и т.д. Вот код, который возвращает WebDriver например:

    public WebDriver getWebDriver() { 
        if (webDriver != null) { 
         return webDriver; 
        } 
    } 
    
  2. У меня есть тестовый класс базовый, который создает экземпляр контекста один. В @Before У меня есть метод установки для запуска браузера:

    @Before 
    public final void setUp() { 
        startBrowser(); 
    } 
    

    Вот метод startBrowser:

    private void startBrowser() { 
        context.getWebDriver().get("about:blank"); 
    } 
    
  3. В рамках основного тестового класса у меня есть также @AfterClass аннотация, что завершает работу браузера :

    @AfterClass 
    public static void tearDownClass() { 
        Context.getSingleton().quit(); 
    } 
    
  4. последние шаги, чтобы включить все @test аннотаций между @Before и @AfterClass из них. Все они будут выполнены без перезапуска браузера. Если вы решите разработать эту структуру, я предлагаю вам создать еще один класс, который расширяет тестовый, и который содержит только те тесты (все методы @Test). Также в моем случае я использую шаблон PageObject. Все это поможет вам улучшить структуру тестовых рамок и оптимизирует ваш код в случае изменений.

Надеюсь, это поможет вам!