我在Eclipse和Chrome中使用Selenium / TestNG和Java作为我的浏览器。每当我使用TestNG方法启动脚本时,我会得到一个空的Chrome页面,我认为该页面是" parent"驱动程序本身的窗口。然后,当我的测试方法在某处导航时,我会得到第二个Chrome窗口,打开我导航到的实际页面。经过所有测试,在拆解时,我试图用driver.quit关闭所有内容,但这只会关闭其中一个浏览器。
是否有一种相当简单的方法(我是Java,Selenium和TestNG的初学者)关闭所有已打开的浏览器?
这是我目前的代码的简化版本。我使用一个基类和另一个扩展基类的类。第二类包含所有测试方法。
package TestNG;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import java.lang.Runtime;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class BaseClass {
public WebDriver driver;
public BaseClass(){
System.setProperty("webdriver.chrome.driver", "/Users/foo/Downloads/chromedriver");
System.setProperty("restart.browser.each.scenario", "false");
driver = new ChromeDriver();
driver.manage().window().maximize();
}
@BeforeSuite
public void setup() {
System.out.println("Running beforesuite.");
}
@AfterSuite
public void teardown() {
System.out.println("Running aftersuite.");
driver.quit();
}
}
第二节用测试方法:
package TestNG;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.openqa.selenium.interactions.Actions;
import org.testng.asserts.*;
public class Userstories extends TestNG.BaseClass {
@Test
public void NavToURL() {
this.driver.get("https:/url.url.se/");
String expectedTitle = ”Hello”;
String actualTitle = driver.getTitle();
Assert.assertEquals(expectedTitle,actualTitle);
}
}