我试图从中得到:
@FindBy(xpath = "//div/span/img") public WebElement addNew; @FindBy(xpath = "//tr[2]/td[12]") public WebElement save; @FindBy(xpath = "//td/div/input") public WebElement entryIdel; @FindBy(xpath = "//textarea") public WebElement authorFieldel; @FindBy(xpath = "//td[3]/div/textarea") public WebElement titleFieldel;
那:
@FindBy(xpath = "//div/span/img") public Button addNew; @FindBy(xpath = "//tr[2]/td[12]") public Button save; @FindBy(xpath = "//td/div/input") public InputBox entryIdel; @FindBy(xpath = "//textarea") public InputBox authorFieldel; @FindBy(xpath = "//td[3]/div/textarea") public InputBox titleFieldel;
我之前已经为每个元素创建了类,但是当然什么也没有发生。如何创建元素类,以便可以代替WebElement使用它?
这里是此时的InputBox代码:
import org.openqa.selenium.WebElement; public class InputBox { protected WebElement element; public WebElement getElement() { return element; } public InputBox(WebElement element) { this.element = element; // TODO Auto-generated constructor stub } public void type(String input) { clearText(); element.sendKeys(input); } public void clearText() { element.clear(); } public boolean isEditable() { return element.isEnabled(); } String getText() { return element.getText(); } String getValue() { return element.getValue(); } }
创建一个新的FieldDecorator实现。
当您使用PageFactory时,您可能正在调用
public static void initElements(ElementLocatorFactory factory, Object page)
这将成为
public static void initElements(FieldDecorator decorator, Object page)
您的FieldDecorator的行为与DefaultFieldDecorator相似,只是将代理包装为您的自定义类型。
在这里查看课程[源代码]