繁体   English   中英

使用 java-selenium 运行黄瓜测试时出现“java.lang.OutOfMemoryError”异常

[英]Getting "java.lang.OutOfMemoryError" exception while running a cucumber test using java-selenium

使用 java-selenium 运行黄瓜测试时,在以下行出现错误:

PageFactory.initElements(driver,LandingPage.class);

以下是页面对象类的完整代码:

public class LandingPage {
    
    WebDriver driver;
    
    public LandingPage(WebDriver driver)
    {
        this.driver=driver;
        PageFactory.initElements(driver,LandingPage.class);
    }
    
    @FindBy(xpath="//a[contains(@id,'accountList')]")
    WebElement account_dd;
    
    public void movemousetodropdown() {
        
        System.out.println("I am trying to move mouse");
        Actions act = new Actions(driver);
        act.moveToElement(account_dd).build().perform();
                
    }

}

下面是步骤定义文件代码:

package stepsdefinition;

import java.time.Duration;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import pages.LandingPage;
import utilities.ConfigReader;

public class AmazonDropdownTest1 {
        
    public static WebDriver driver;
    LandingPage p1;
    @Given("I am on amazon dot com")
    public void i_am_on_amazon_dot_com() {
        
        // Write code here that turns the phrase above into concrete actions
        
        System.setProperty("webdriver.chrome.driver", ConfigReader.getInstance().getChromePath());
        driver = new ChromeDriver();
        driver.get("https://amazon.com");
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        System.out.println("step1");
        p1= new LandingPage(driver);
    }
    @When("I take my mouse to the first dropdown")
    public void i_take_my_mouse_to_the_first_dropdown() {
        // Write code here that turns the phrase above into concrete actions
         System.out.println("step2");
        p1.movemousetodropdown();
       
    }
    @When("I click on the first dropdown")
    public void i_click_on_the_first_dropdown() {
        // Write code here that turns the phrase above into concrete actions
         System.out.println("step3");
    }
    @Then("I am able to see list of values on dropdown")
    public void i_am_able_to_see_list_of_values_on_dropdown() {
        // Write code here that turns the phrase above into concrete actions
         System.out.println("step4");
    }
    @Then("I click one of the option from that dropdown")
    public void i_click_one_of_the_option_from_that_dropdown() {
        // Write code here that turns the phrase above into concrete actions
         System.out.println("step5");
        
        driver.quit();
    }

}

得到以下错误:

java.lang.OutOfMemoryError: Java heap space
    at java.base/java.util.Arrays.copyOf(Arrays.java:3744)
    at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:146)
    at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:607)
    at java.base/java.lang.StringBuffer.append(StringBuffer.java:355)
    at java.base/java.io.StringWriter.write(StringWriter.java:122)
    at java.base/java.io.PrintWriter.write(PrintWriter.java:542)
    at java.base/java.io.PrintWriter.write(PrintWriter.java:559)
    at java.base/java.io.PrintWriter.print(PrintWriter.java:686)
    at java.base/java.io.PrintWriter.println(PrintWriter.java:839)
    at java.base/java.lang.Throwable$WrappedPrintWriter.println(Throwable.java:768)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:701)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)
    at java.base/java.lang.Throwable.printEnclosedStackTrace(Throwable.java:713)

注意:我尝试增加 Java 堆内存,但仍然出现相同的错误,可能的解决方案是什么。

最后我能够解决这个问题。 下面是正确的代码。 我已经改变了PageFactory.initElements(driver,LandingPage.class); PageFactory.initElements(driver,this); 它开始工作正常。

package pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class LandingPage {
    
    WebDriver driver;
    
    public LandingPage(WebDriver driver)
    {
        this.driver=driver;
        PageFactory.initElements(driver,this);
    }
    
    @FindBy(xpath="//a[contains(@id,'accountList')]")
    WebElement account_dd;
    
    public void movemousetodropdown() {
        
        System.out.println("I am trying to move mouse");
        Actions act = new Actions(driver);
        act.moveToElement(account_dd).build().perform();
                
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM