在页面 class 中定义的 Webelement 在测试 class 中不可访问
Webelement, which is defined in page class, is not accessible in Test class
我正在使用 POM 框架自动化一个网站,我有一个页面 class 和一个测试 class(在许多页面中)。
页面 class 是: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 的测试 class,里面的代码如下所示:
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() 这样的常用方法。
我做错了什么吗?
属性 serachfield
和 serachresult
看起来像 package private,无法从包外部访问它们。您需要做的就是使用 public
访问修饰符使它们 public。
而且,谈到 POM 的最佳实践,您无论如何都不应该 public 访问这些属性。尝试在 FindPeople
class 中创建方法,这将帮助您使用这些属性并使方法 public
每个没有访问修饰符声明的 属性 都是私有的,所以如果你想创建 public 属性,你必须准确地指定它。
但我同意 Saifur 关于最佳实践和创建访问属性的内部方法的观点。
这里可能有一些有用的信息:。
我正在使用 POM 框架自动化一个网站,我有一个页面 class 和一个测试 class(在许多页面中)。
页面 class 是: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 的测试 class,里面的代码如下所示:
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() 这样的常用方法。
我做错了什么吗?
属性 serachfield
和 serachresult
看起来像 package private,无法从包外部访问它们。您需要做的就是使用 public
访问修饰符使它们 public。
而且,谈到 POM 的最佳实践,您无论如何都不应该 public 访问这些属性。尝试在 FindPeople
class 中创建方法,这将帮助您使用这些属性并使方法 public
每个没有访问修饰符声明的 属性 都是私有的,所以如果你想创建 public 属性,你必须准确地指定它。 但我同意 Saifur 关于最佳实践和创建访问属性的内部方法的观点。
这里可能有一些有用的信息:。