我有几十个Selenium Webdriver测试。我想立刻运行它们。如何运行测试以便每个测试都不会打开新的Webdriver浏览器窗口?
这样的解决方案可能吗?这会导致驱动程序出现nullPointError。
@ClassnameFilters({"com.company.package*", ".*Test"})
public class TestSuite {
public static WebDriver driver;
@BeforeClass
public static void setUpClass() {
driver = new FirefoxDriver();
}
@AfterClass
public static void setDownClass() {
driver.quit();
}
}
public class Test {
private WebDriver driver = TestSuite.driver;
@Test.... {
}
放置新对象初始化属性会使第一个测试运行,但其他测试会导致无法访问的浏览器错误。请帮忙!
答案 0 :(得分:0)
public static WebDriver driver;
中声明public class TestSuite
并在中创建实例时
@BeforeClass
public static void setUpClass() {
driver = new FirefoxDriver();
}
你不需要
public class Test
初始化
再次 private WebDriver driver = TestSuite.driver;
。
取而代之的是,我将以下列方式使用来自public class Test
的继承public class TestSuite
,并在@Test
注释的测试中简单地调用我的驱动程序,因为它被初始化为静态。代码如下:
public class Test extends TestSuite {
@Test
public void findButtonAndClickOnIt(){
String buttonCssSelector ="...blablabla...";
driver.findElement(By.cssSelector(buttonCssSelector)).click();
}
}
希望现在它适合你。
答案 1 :(得分:-1)
要处理此问题,请尝试使用@BeforeClass, @AfterClass
注释:
import com.google.common.base.Function;
import com.thoughtworks.selenium.SeleneseTestBase;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Wait;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.NoSuchElementException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
public class BaseSeleniumTest extends SeleneseTestBase {
static WebDriver driver;
@Value("login.base.url")
private String loginBaseUrl;
@BeforeClass
public static void firefoxSetUp() throws MalformedURLException {
DesiredCapabilities capability = DesiredCapabilities.firefox();
driver = new RemoteWebDriver(new URL("http://192.168.4.52:4444/wd/hub"), capability);
driver = new FirefoxDriver(); //for local check
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.manage().window().setSize(new Dimension(1920, 1080));
}
@Before
public void openFiretox() throws IOException {
driver.get(propertyKeysLoader("login.base.url"));
}
@AfterClass
public static void closeFirefox(){
driver.quit();
}
...
@BeforeClass意味着您初始化某些内容,并且@Test
注释的所有以下selenium测试都在一个打开的浏览器窗口中运行。
希望这会对你有所帮助。