• 感谢, 看到了

  • @simple 这个专栏是可以自由申请, 还是需要什么限制, 如果是自由的申请, 那就直接申请下..

  • 感谢分享

  • 我看你这个文件的路径 :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 这些操作那?

  • 不错, 晚上回去看看, 感谢分享

  • 嗯, 能有不同的方式实现 挺好的, 至少多个思路. 也许以后哪里就用上了

  • 看代码, 这操作应该是在创建 webdriver 之前操作的, 得到已经存在的 session,来 build webdrive.这个 sessionResponse 和 execute(Command.GET_ALL_SESSIONS),是项目自己定义的吗?还是 appium 自带的 api?

  • http://www.cnblogs.com/xmlbw/p/4510153.html 我搜到的, 你看下 里面的 newCommandTimeout

  • 我的方式只是保证在一个 session 期间的调试, 你的这种方式我没有试过,能分享下具体的方式吗?

  • #5 楼 @miumiu 这几个包 都在 android 的 SDK 下,

  • #7 楼 @lovoro IDEA,Jetbrain 的, java 的 ide

  • 才发现网上有 MonkeyRunner 的详细分析的, 中文的. 非常详细,基本上的问题都能解决, 写的很好.
    MonkeyRunner 源码剖析

  • #1 楼 @anikikun 我的初步想法是能在我的测试 case 里面直接写操作, 但是我查看了下, 基本都是 python 学的例子. 而我用到的 framework 和其他的专业工具都是主要用 java, 更多的时候,都是环境妥协的结果吧.

  • Appium 简易 Framework 尝试 at 2015年06月11日

    封装的方法 主要适用于 hybrid 的 app, 因为切换到 webview 后和 一般的 浏览器操作基本一致. 还需要很多的修改,主要是一些 基于 webdriver 的操作方法, 完全套用为 浏览器的操作有问题.

  • Appium 简易 Framework 尝试 at 2015年06月11日

    @wh476516029 你用 Appium 的 inspector 试试吧, framework 本身不支持录制,而且录制的脚本 也不好应用在 常规的 framework 里面

  • 真是希望谷歌用 标准的 java swing 来开发 android sdk 的相关 UI, Eclipse 的 rcp 真是不熟悉.

  • 玩转 Appium 中 logger at 2015年04月30日

    好东西 还是要支持啊, 都是直接写个简单的 framework 直接用, 真没考虑过这些,也没仔细的看看 js 的文件