有没有办法可以用标准的java对象注册用户定义的函数
更好地解释一下,我有一个简单的硒代码。
ObectRepository OR = PageFactory.initElements(objDriver, ObectRepository.class);
OR.objLinkRegister.click();
OR.objInputFirstName.sendKeys(strTestmap.get("ABC")); //objInputFirstName is an input box
现在我没有使用sendkeys函数作为输入字段,而是想要使用一个函数来执行sendkeys功能,也可以使用自己的东西。代码可能如下所示......
ObectRepository OR = PageFactory.initElements(objDriver, ObectRepository.class);
OR.objLinkRegister.click();
OR.objInputFirstName.sendKeysWithReports(strTestmap.get("ABC"));
// normal flow below.
private class myClass()
{
public void sendKeysWithReports(objInputFirstName)
{
objInputFirstName.SendKeys;
//Do some stuff return to the notrmal flow
}
}
请忽略任何语法错误,因为我是Java的新手:)
答案 0 :(得分:1)
您已经通过尝试创建子类来到达正确的路径,该子类代理方法调用内部元素。在你的情况下,它将是:
public class ReportingObjectRepository {
private ObjectRepository internal;
public ReportingObjectRepository(ObjectRepository internal) {
this.internal = internal;
}
public void sendKeys(Object o) {
// Do your reporting stuff
internal.sendKeys(o);
}
// You have to implement proxy methods for other methods you use
}
最后,您应该看一下visitor模式,它可能在将来对您有所帮助。