【问题标题】:Cucumber-JVM: Parallel execution not exactly parallelCucumber-JVM:并行执行不完全并行
【发布时间】:2021-07-09 09:46:35
【问题描述】:

我编写了两个功能文件,每个功能文件都打开不同的浏览器 URL,例如一个是打开 google.com,第二个是打开 amazon.com,但事实并非如此。

两种浏览器都打开了 google.com。此外,它不能与浏览器交互,任何编码到浏览器的操作都不会被执行。除此之外,关闭第一个浏览器会导致第二个浏览器出现空指针异常。

Cucumber 版本 6 我从 AbstractCucumberTesNG 继承开始。然后我创建 Login.Feature 并跟随 AddProduct.Feature。

预期的行为应该是一个浏览器打开 phptravels.net 网站,另一个浏览器打开 http://sellerceter.lazada.my

我目前的情况并非如此,它使用 phptravels.net 打开两个浏览器,在关闭一个浏览器后打开了 Seller.lazada 网站。

public class AddProduct {

    private WebDriverWait timeWait;
    private AddProductPageObject page;
    private ChromeDriver driver;
    private Logger log = LogManager.getLogger(AddProduct.class);
    // ======================================================================
    public AddProduct() {
    }

    @Given("navigate to manage product")
    public void navigateToManageProduct() {
        log.info("Start Login");
        try {

            WebDriverManager.chromedriver().setup();
            driver =  new ChromeDriver();
            this.timeWait = new WebDriverWait(driver, 30);
            page = PageFactory.initElements(driver, AddProductPageObject.class);
            driver.navigate().to("https://sellercenter.lazada.com.my/apps/seller/login");
            timeWait.until(ExpectedConditions.visibilityOfElementLocated(page.getLazadaSellerLogo()));

            // Input username
            driver.findElement(page.getUsername()).click();
            driver.findElement(page.getUsername()).clear();
            driver.findElement(page.getUsername()).sendKeys("nicholaswkc34@gmail.com");

            // Input password
            driver.findElement(page.getPassword()).click();
            driver.findElement(page.getPassword()).clear();
            driver.findElement(page.getPassword()).sendKeys("wlx_+279295");

            // Click submit btn
            driver.findElement(page.getSignInButton()).click();

            //assertThat(page.getPageTitle())

            Wait wait = new Wait();
            wait.implicitWait(driver, 5);

        } catch (Exception e) {
            log.error(e);
        }
    }
}

公共类 Login_FE {

private WebDriverWait timeWait;
private LoginPageObject page;
private ChromeDriver driver;
private Logger log = LogManager.getLogger(Login_FE.class);
// ======================================================================
public Login_FE() {
}

@Given("Launch the homepage and login")
public void launchTheHomepageAndLogin() {
    log.info("Start Login");
    try {

        WebDriverManager.chromedriver().setup();
        driver =  new ChromeDriver();
        timeWait = new WebDriverWait(driver, 30);
        // Instantiate LoginPageObject
        page = PageFactory.initElements(driver, LoginPageObject.class);
        log.info("Navigate to phptravels homepage");
        driver.navigate().to("https://www.phptravels.net/admin");
        timeWait.until(ExpectedConditions.visibilityOfElementLocated(page.getPhpLogo()));

        Actions inputAct = new Actions(driver);
        inputAct.sendKeys("admin@phptravels.com").perform();
        driver.findElement(page.getUsername()).sendKeys("admin@phptravels.com");


        Wait wait = new Wait();
        wait.implicitWait(driver, 3);



    }catch(Exception e) {
        log.error(e);
    }



    log.info("Login Successfully");
}

}

【问题讨论】:

    标签: java maven cucumber cucumber-jvm


    【解决方案1】:

    我使用相同的概念来测试移动应用。因此,为了打开 2 个浏览器并分别与它们进行交互,您必须在启动时存储驱动程序,如下所示:

    private static ThreadLocal<AppiumDriver<MobileElement>> appiumDriver = new ThreadLocal<>();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多