我正在使用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()等常用方法。
我做错了吗?
答案 0 :(得分:0)
属性serachfield
和serachresult
似乎package private无法从包外部访问。您需要做的就是使用public
访问修饰符公开它们。
而且,谈到POM的最佳实践,您无论如何都不应公开访问这些属性。尝试在FindPeople
类中创建方法,这将有助于您使用这些属性并使方法公开
答案 1 :(得分:0)
声明没有访问修饰符的每个属性都是私有的,因此如果要创建公共属性,则必须准确指定它。 但我同意Saifur关于最佳实践以及创建访问属性的内部方法。
这里可能是一些有用的信息:https://stackoverflow.com/a/215505/2131257。