有没有办法可以用标准的java对象注册用户定义的函数

时间:2017-05-22 15:14:10

标签: java selenium

有没有办法可以用标准的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的新手:)

1 个答案:

答案 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模式,它可能在将来对您有所帮助。