Webelement在页面类中定义,在Test类中不可访问

时间:2015-12-08 17:56:21

标签: java selenium webdriver pom.xml

我正在使用POM框架自动化网站,我有一个页面类和一个测试类(在众多中)。

页面类是:FindPeople.java,我在里面写的代码如下:

public class FindPeople {

    @FindBy(id="ContentPlaceHolderDefault_Body_Body_Content_***SearchSimpleDialog_13_tbQuery")

    WebElement serachfield;

    @FindBy(xpath=".//*[@id='ContentPlaceHolderDefault_Body_Body_Content_***SearchSimpleResults_14_pnlResults']/div[1]/div/a")

    WebElement serachresult;

    public void typeInSearchField()
    {
        serachfield.sendKeys(DataProviderFactory.readHomeData().getPeopledata(2, 0));
    }
}

我有一个名为VerifyInputField.java的测试类,里面的代码如下所示:

public class VerifyInputField {

    WebDriver driver;

    @Test
    public void verifyInputField() throws AWTException {

        driver= BrowserFactory.getBrowser("Chrome");

        BrowserFactory.getURL();

        FindPeople findpeople = PageFactory.initElements(driver, FindPeople.class);

        findpeople.typeInSearchField();
     }
}

问题是,我在FindPeople.java中发现了Webelemnts(serachfield,serachresult);在VerifyInputField.java中无法访问。我的意思是,我没有使用任何这些元素获得click(),gettext()等常用方法。

我做错了吗?

2 个答案:

答案 0 :(得分:0)

属性serachfieldserachresult似乎package private无法从包外部访问。您需要做的就是使用public访问修饰符公开它们。

而且,谈到POM的最佳实践,您无论如何都不应公开访问这些属性。尝试在FindPeople类中创建方法,这将有助于您使用这些属性并使方法公开

答案 1 :(得分:0)

声明没有访问修饰符的每个属性都是私有的,因此如果要创建公共属性,则必须准确指定它。 但我同意Saifur关于最佳实践以及创建访问属性的内部方法。

这里可能是一些有用的信息:https://stackoverflow.com/a/215505/2131257