我正试图从中得到:
@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,只是将代理包装在您的自定义类型中。
在这里查看类(class) [source]
关于java - 如何为@FindBy 注解实现用户类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9478592/