• 感谢分享

  • 我看你这个文件的路径 :src/com.kdzwy.cases/MteSenseInstanceUpdate.java
    应该是 src/com/kdzwy/cases/MteSenseInstanceUpdate.java
    fullclassname 应该是 : com.kdzwy.cases.MteSenseInstanceUpdate.java
    ?

  • 或者尝试下 到github 拿下最新的 0.2.2 版本的jar

  • 这个是我的栗子的:
    MteSenseWddLoaderTest

    MteSenseLoader loader = new MteSenseLoader();
    
    MteSenseLoaderOptions options=new MteSenseLoaderOptions();
    
    options.setLoaderOption("mtesensewdd.webDriverType","chrome");
    options.setLoaderOption("mtesensewdd.fullFilePath","./src/test/MteSenseActionUpdate.java");
    options.setLoaderOption("mtesensewdd.fullClassName","test.MteSenseActionUpdate");
    options.setLoaderOption("mtesensewdd.url","");
    options.setLoaderOption("mtesensewdd.methodName","runDynamicAction");
    
    
    loader.senseLoader(options,driver);
    

    MteSenseActionUpdate

    package test;
    
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.remote.Command;
    import org.openqa.selenium.remote.DriverCommand;
    import org.openqa.selenium.remote.HttpCommandExecutor;
    
    import java.net.URL;
    
    /**
     * Created by java on 20/07/2017.
     */
    public class MteSenseActionUpdate {
    
        public String getValue(){
            return "Testerhome";
        }
    
        public void runDynamicAction(ChromeDriver driver) {
    
    //        driver.get("http://wwww.baidu.com");
    
            driver.findElementById("kw").sendKeys(getValue());
    
            driver.findElementById("su").click();
    }
    

    主要的关键是 下面的参数设置

    options.setLoaderOption("mtesensewdd.fullFilePath","./src/test/MteSenseActionUpdate.java");
    options.setLoaderOption("mtesensewdd.fullClassName","test.MteSenseActionUpdate");
    

    mtesensewdd.fullFilePath 指定你要编辑的操作文件的物理路径
    mtesensewdd.fullClassName 代表操作文件的全名 例如栗子里的 test/MteSenseActionUpdate.java 对应 test.MteSenseActionUpdate

    这样当你启动之后 就直接编辑MteSenseActionUpdate 这个java文件的 指定方法, 然后save, 只要这个文件的更新时间更改, 就会执行

  • 能把 你的 具体代码贴出来一下吗? 我看下你的实际代码, src/com.kdzwy.cases/MteSenseInstanceUpdate.java last modified time is 0 这个log 通常表示, 就没发现这个文件或者找这个文件出错, 也就没法在内存中编译.

  • MteSenseInstanceUpdate.java 这个文件 你是在运行之前就创建了过了, 作为参数,你输入的package+类名字 是正确的吗?

  • 而且即使抛出异常, 你再次修改后,save一下, last modified time 就会改变, 就会再次编译执行...

  • 在我这边没发现这个问题, 我看log 里面给出的 last modified time is 0 这个太奇怪了.. 你用的是什么driver, MteSenseInstanceUpdate.java 这个文件的package的full 那么之类的 参数输入都校验过吗?

    常规的 更新action的文件,也就是MteSenseInstanceUpdate.java, 检查last modified time 应该是一串数值,不应该是0

  • 建议还是用ant或者maven 来写 build的脚本, 建jenkins的job来跑case, 好控制, Jenkins 本身也支持在目标机器上 直接执行 java 命令的. 同时也支持 远程API调用 Jenkins的job, 还是比较灵活的

  • 我的 selenium日常调试 at 2017年07月25日

    不管你做多少操作, 只要你点击调试, 就直接生成个编译目标文件, 然后直接编译执行就好了.至少需要编译的目标文件这些都是可以自定义的, 只是里面的内容是在UI界面上的到的, 但是不放放开些, 用户不见得只是做element的调试, 很有可能会包含其他的很多处理, 比如传入数据 操作文件 甚至 连接数据库做操作等, 你的UI要做到多复杂才能handle这些操作那?

保持不断的学习才是提升自己的唯一出路