我需要根据某些属性注入不同的PageObject实现,但在管理WebDriver会话时遇到了问题。页面配置:
@Configuration
public class PageImplConfig {
@Value("${application.url}")
private String url;
@Bean
public IProductDetailsPage pdp() {
if(url.contains("www.somesite.com")) {
return new ProductDetailsPageHG();
} else {
return new ProductDetailsPageDefault();
}
}
}
WD配置:
@Bean
@Scope("browserscope")
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public WebDriver chromeDriver(){
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriverManager.chromedriver().setup();
return new ChromeDriver(options);
}
Autowire接口:
public class PdpSteps extends SpringBaseTestNGTest {
@Autowired
protected IProductDetailsPage pdp;
}
当在Scenarion Outline(cucumber)中使用它时-第一个示例正常工作,但是当pdp用于第二个示例时-它崩溃了'org.openqa.selenium.NoSuchSessionException: Session ID is null. Using WebDriver after calling quit()?'
我应该如何正确管理会话?
1条答案
按热度按时间8ulbf1ek1#
通过将@ScenarioScope添加到PageImplConfig修复了一个问题