无法使用 Java 运行 Selenium Web 驱动程序

软件测试 网络驱动程序 爪哇
2022-01-10 12:52:48

我尝试使用以下代码运行以下代码以开始在 Java 上运行 Selenium WebDriver

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.*;
public class Runner 
{

    public static void main(String[] args) 
    {

        WebDriver driver;
        driver = new InternetExplorerDriver();
        driver.get("http://www.google.co.in");
        try
        {/// Exception thrown on initElements

            GoogleSearchPage page1 = PageFactory.initElements(driver, GoogleSearchPage.class);


            page1.SearchFor("hu ha 123");
        }
        catch(Exception excp)
        {
            System.out.println(excp.toString());
        }
        driver.quit();
    }

}

class GoogleSearchPage
{
    @FindBy(how = How.NAME, using = "q")
    public WebElement searchbox;

    public void SearchFor(String Text)
    {
        searchbox.sendKeys(Text);
        searchbox.submit();
    }
}

我得到异常 java.lang.RuntimeException: java.lang.IllegalAccessException: Class org.openqa.selenium.support.PageFactory can't access a member of class moronicpackage.GoogleSearchPage with modifiers ""

有任何想法吗?

4个回答

我错误地调用了 PageFactory.initElements。第二个参数需要是 GoogleSearchPage 实例而不是 GoogleSearchPage 类对象。主要方法需要如下所示:

    public static void main(String[] args) 
{
    WebDriver driver;
    driver = new InternetExplorerDriver();
    driver.get("http://www.google.co.in");
    try
    {
        GoogleSearchPage page1 = new GoogleSearchPage();
        PageFactory.initElements(driver, page1);        
        page1.SearchFor("hu ha 123");
    }
    catch(Exception excp)
    {
        System.out.println(excp.toString());
    }

    driver.quit();
}

文档没有错。需要将页面对象类指定为公共类。因此将 GoogleSearchPage 移动到不同的文件并将其指定为公共类应该可以正常工作。这里建议的方式也是正确的,但只是一种选择。

尝试公开您的 GoogleSearchPage 课程。而不是这个:

class GoogleSearchPage

做这个:

public class GoogleSearchPage
public class Create_User {
    WebDriver driver;

    DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
    capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
    driver = new InternetExplorerDriver(capabilities); 
    driver.get(getProperty("www.google.co.in"));
}