如何在当前的Firefox窗口中启动Selenium?没有打开新窗口

时间:2016-03-16 20:01:41

标签: java selenium firefox selenium-firefoxdriver new-window

我需要在当前的Firefox窗口中启动我的JAVA Selenium代码。但是,当我开始我的代码WebDriver driver = new FirefoxDriver();将打开新窗口!不需要打开新窗口! 在Selenium中,IDE代码适用于浏览器的当前窗口。

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("Покупка успешно завершена!");
}

}

1 个答案:

答案 0 :(得分:0)

在我的情况下,我使用Selenium和junit来运行单独的测试。 这基本上是架构:

  1. 我有一个单例Context类,它根据浏览器创建Selenium WebDriver的实例。作为实施的一部分,我正在检查webDriver = null;。对于浏览器if (browser == Browser.IE)等。以下是返回WebDriver实例的代码:

    public WebDriver getWebDriver() {
        if (webDriver != null) {
            return webDriver;
        }
    }
    
  2. 我有一个基础测试类,它实例化Context 1。在@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. 最后一步是在@Before和@AfterClass之间包含所有@Test注释。所有这些都将在没有浏览器重启的情况下执行。 如果您决定进一步开发此框架,我建议您创建另一个扩展测试的类,它只包含测试(所有@Test方法)。在我的情况下,我使用PageObject模式。所有这些都将帮助您获得更好的测试框架结构,并在发生变化时优化您的代码。

  5. 希望这对你有帮助!