2 つのブラウザー (Chrome、Firefox) でセレン キュウリの Java スクリプトを実行しようとすると、スタックします。単一のブラウザーを使用すると、テストは正常に機能します。Selenium PageFactory クラスを使用して Web 要素を初期化します。
問題は、2 つのブラウザーでテストを実行すると、最初のブラウザーが開き、URL に移動しても何も起こらないことです。Web 要素は初期化されていません。テストは 2 番目のブラウザーに進み、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;
これはテスト クラスであり、2 つのブラウザーでテストを実行しようとした方法です。
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
ブラウザーの初期化後、このメソッドは 2 番目のブラウザー (Firefox) では正常に実行されますが、最初のブラウザー (Chrome) ではまったく実行されませんでした。
public void testMetod1(String amount) throws InterruptedException {
basePage.amountField.click();
私の疑いでは、1 回の実行で両方のブラウザーに対して PageFacory を開始できなかったのですが、これをさらに診断する方法がわかりません。for
ループ エラーの可能性もあります。