我在尝试在两个浏览器(Chrome、Firefox)中运行 selenium cucumber java 脚本时被卡住了。当我使用单个浏览器时,测试工作正常。我使用 selenium PageFactory 类来初始化 Web 元素。
问题是当我对两个浏览器运行测试时,第一个浏览器打开,导航到 URL,然后什么也没有发生。Web 元素未初始化。测试转到第二个浏览器,导航到 URL,初始化 Web 元素,后续测试方法 ( testMethod1
) 按预期运行。为什么测试没有在第一个浏览器上运行?
这是包含 Web 元素的 PageFactory BasePage 类:
public class BasePage {
private final WebDriver driver;
public BasePage(WebDriver driver) {this.driver = driver;} //constructor
@FindBy(id = "cc-amount")
public WebElement amountField;
这是测试类以及我如何尝试在两个浏览器中运行测试:
public class Convert {
private static WebDriver driver;
private final BaseUtil baseUtil = new BaseUtil();
private static BasePage basePage;
private static int browser;
public void navigateToUrl(String url) throws InterruptedException {
for (browser = 1; browser <= 2; browser++) {
if (browser == 1) {
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
} else if (browser == 2) {
WebDriverManager.firefoxdriver().setup();
driver = new FirefoxDriver();
}
driver.get(baseUtil.getMyUrl()); //Url coming from a utility class
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
basePage = PageFactory.initElements(driver, BasePage.class); //initialisation of the BasePage class conttaining the pagefactory web elements
浏览器初始化后,此方法在第二个浏览器(Firefox)中运行正常,但在第一个浏览器(Chrome)中根本没有运行:
public void testMetod1(String amount) throws InterruptedException {
basePage.amountField.click();
我的怀疑是无法在一次运行中为两个浏览器启动 PageFacory,但我不知道如何进一步诊断。也可能是for
循环错误。