感谢, 看到了
@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, 还是比较灵活的
不管你做多少操作, 只要你点击调试, 就直接生成个编译目标文件, 然后直接编译执行就好了.至少需要编译的目标文件这些都是可以自定义的, 只是里面的内容是在 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 期间的调试, 你的这种方式我没有试过,能分享下具体的方式吗?
才发现网上有 MonkeyRunner 的详细分析的, 中文的. 非常详细,基本上的问题都能解决, 写的很好.
MonkeyRunner 源码剖析
封装的方法 主要适用于 hybrid 的 app, 因为切换到 webview 后和 一般的 浏览器操作基本一致. 还需要很多的修改,主要是一些 基于 webdriver 的操作方法, 完全套用为 浏览器的操作有问题.
@wh476516029 你用 Appium 的 inspector 试试吧, framework 本身不支持录制,而且录制的脚本 也不好应用在 常规的 framework 里面
真是希望谷歌用 标准的 java swing 来开发 android sdk 的相关 UI, Eclipse 的 rcp 真是不熟悉.
好东西 还是要支持啊, 都是直接写个简单的 framework 直接用, 真没考虑过这些,也没仔细的看看 js 的文件