gpt4 book ai didi

java - WebDriver 未在 Cucumber 测试中实例化

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:07 25 4
gpt4 key购买 nike

我正在尝试实例化 WebDriver 的单个实例以在某些测试中使用,这样做可能会过于复杂。我想我只需要实例化一个静态网络驱动程序,然后为每个功能文件重复使用一次,假设这是可能的。

我不清楚为什么驱动程序没有被实例化。我正在尝试通过从 IDE (intelliJ) 中的功能文件运行来进行调试。我期望驱动程序在调用 Super 时实例化。

步骤定义:

public class FindAHolidayStepDefs extends DriverBase {

private HolidaysHomePage tcHomePage;
private SearchResultsPage searchPage;

@Before //this is the cucumber @Before
public void setup(){
holHomePage = new HolidaysHomePage(driver);
searchPage = new SearchResultsPage(driver);
}

@Given("^I am on the Holidays homepage$")
public void IAmOnTheHolidaysHomepage() {
assertEquals("the wrong page title was displayed !", "Cheap Travel\u00ae : Cheap Holidays & Last Minute Package Deals", holHomePage.getTitle());
} // more step defs below...

页面对象:

public class HolidaysHomePage extends SeleniumBase {

public HolidaysHomePage(WebDriver driver) {

super(driver); //Expecting driver to instantiate here
visit("");
driver.manage().window().maximize();
assertTrue("The Holidays header logo is not present",
isDisplayed(headerLogo));
}

//code...

驱动程序库:

public class DriverBase implements Config {

protected WebDriver driver;

@Before //this is the Junit @Before
public void before() throws Throwable {
if (host.equals("localhost")) {
switch (browser) {
case "firefox":
driver = new FirefoxDriver();
break;
case "chrome":
System.setProperty("webdriver.chrome.driver",
System.getProperty("user.dir") + "\\drivers\\chromedriver.exe");
driver = new ChromeDriver();
break;
}
}
}

@After
public void after() {
driver.quit();
}

};

SeleniumBase(只是一个抽象出 Selenium API 方法的类)

public class SeleniumBase implements Config {

public WebDriver driver;

public SeleniumBase(WebDriver driver) {
this.driver = driver;
}

public void visit(String url) {
if (url.contains("http")) {
driver.get(url);
} else {
driver.get(baseUrl + url);
}
}

配置:

public interface Config {

final String baseUrl = System.getProperty("baseUrl", "http://holidaystest.co.uk/");
final String browser = System.getProperty("browser", "chrome");
final String host = System.getProperty("host", "localhost");

}

最佳答案

根据您的代码,以下是我的建议:

  1. 您不需要有 DriverBase 类,因为您已经创建了 SeleniumBase
  2. 将以下驱动程序初始化代码移至 FindAHolidayStepDefs 中的 setup() 方法
  3. FindAHolidayStepDefs 应扩展 SeleniumBase

    if (host.equals("localhost")) {
    切换(浏览器){
    案例“火狐”:
    驱动程序 = 新的 FirefoxDriver();
    休息;
    案例“ Chrome ”:
    System.setProperty("webdriver.chrome.driver",
    System.getProperty("user.dir") + "\\drivers\\chromedriver.exe");
    驱动程序 = 新的 ChromeDriver();
    休息;
    }
    }

关于java - WebDriver 未在 Cucumber 测试中实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com