我需要在当前的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("Покупка успешно завершена!");
}
}
答案 0 :(得分:0)
在我的情况下,我使用Selenium和junit来运行单独的测试。 这基本上是架构:
我有一个单例Context类,它根据浏览器创建Selenium WebDriver的实例。作为实施的一部分,我正在检查webDriver = null;
。对于浏览器if (browser == Browser.IE)
等。以下是返回WebDriver实例的代码:
public WebDriver getWebDriver() {
if (webDriver != null) {
return webDriver;
}
}
我有一个基础测试类,它实例化Context 1。在@Before中我有一个浏览器启动的设置方法:
@Before
public final void setUp() {
startBrowser();
}
这是startBrowser方法:
private void startBrowser() {
context.getWebDriver().get("about:blank");
}
作为基本测试类的一部分,我还有@AfterClass注释退出浏览器:
@AfterClass
public static void tearDownClass() {
Context.getSingleton().quit();
}
最后一步是在@Before和@AfterClass之间包含所有@Test注释。所有这些都将在没有浏览器重启的情况下执行。 如果您决定进一步开发此框架,我建议您创建另一个扩展测试的类,它只包含测试(所有@Test方法)。在我的情况下,我使用PageObject模式。所有这些都将帮助您获得更好的测试框架结构,并在发生变化时优化您的代码。
希望这对你有帮助!