AndroidDriver
测试过程
真机启动:使用数据线将
Android
手机与电脑相连
adb server is out of date. killing...
ADB server didn't ACK
* failed to start daemon *
解决:关掉qq
出现这种问题一定是你电脑上有别的软件也同时运行了adb导致端口冲突了,所有带有连接android 手机功能的软件都要关掉,比如qq,豌豆荚,阿里旺旺,等等。并且打开任务管理器,找到正在运行的进程中所有adb相关的进程并终止掉,如adb.exe,tadb.exe等等。然后再重新adb 一下应该就可以。
@BeforeTest public void setUp() { // 启动手机端的webdriver——作为服务端,没有其他前台应用 try { //打开webdriver // 配置adb 环境变量http://jingyan.baidu.com/article/17bd8e52f514d985ab2bb800.html Runtime.getRuntime().exec( "adb shell am start -a android.intent.action.MAIN " + "-n org.openqa.selenium.android.app/.MainActivity"); /*连接服务端webdriver,连接用的端口为8080,如果本地有开启了或使用了该端口,需要关闭(http://localhost:8080/exit),不然连接不上服务端webdriver */ Runtime.getRuntime().exec("adb -s HC51BWWE0103 forward tcp:8080 tcp:8080"); } catch (IOException e) { e.printStackTrace(); } driver = new AndroidDriver(); } @AfterTest public void tearDown() { driver.quit(); }
@Test public void testBaidu() { driver.get("http://m.baidu.com/"); System.out.println("title:"+driver.getTitle());//title:百度一下 WebElement element = driver.findElement(By.name("word")); element.sendKeys("hello"); element.submit(); System.out.println("title:"+driver.getTitle());//title:hello - 百度 }
查看设备, 确认是否已经连上
adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
2.安装软件
adb install
adb install :这个命令将指定的apk文件安装到设备上
Android系列教程(六) adb操作命令详解
3. 卸载软件
adb uninstall <软件名>
adb uninstall -k <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件.
4. 进入设备或模拟器的shell:
adb shell
通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令,另外如果只想执行一条shell命令,可以采用以下的方式:
adb shell [command]
如:adb shell dmesg会打印出内核的调试信息。
5. 发布端口
可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000
6. 从电脑上发送文件到设备
adb push <本地路径> <远程路径>
用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)
7. 从设备上下载文件到电脑
adb pull <远程路径> <本地路径>
用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑
8、查看bug报告
adb bugreport
9、记录无线通讯日志
一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
adb shell
logcat -b radio
10、获取设备的ID和序列号
adb get-product
adb get-serialno
adb shell
{status:0}
WebDriver driver = new ChromeDriver(); driver.get("http://localhost/cookie.php"); driver.manage().deleteAllCookies(); Cookie cookie=new Cookie("username","username","/",null); driver.manage().addCookie(cookie); Cookie cookie1=new Cookie("password","password","/",null); driver.manage().addCookie(cookie1); driver.get("http://localhost/cookie.php"); Thread.sleep(3000); driver.quit();
Cookie cookie=new Cookie("java","eclipse","/",null); driver.manage().addCookie(cookie); //删除名称为value的cookie driver.manage().deleteCookieNamed("value"); //删除刚才新增的cookie java driver.manage().deleteCookie(cookie); //输出现有cookie Set<Cookie> cks=driver.manage().getCookies(); System.out.println("cookie总数为"+cks.size()); for(Cookie ck:cks) System.out.println("作用域:"+ck.getDomain()+", 名称:"+ck.getName()+ ", 值:"+ck.getValue()+", 范围:"+ck.getPath()+ ", 过期时间"+ck.getExpiry()); //删除全部cookie driver.manage().deleteAllCookies(); Set<Cookie> c=driver.manage().getCookies(); System.out.println("cookie总数为"+c.size());
// Execute JavaScript on page loading ((JavascriptExecutor)driver).executeScript("alert(\"Hello,World!\")"); /* * Execute JavaScript on web element */ WebElement ele = driver.findElement(By.id("js")); // locate web element ((JavascriptExecutor) driver) .executeScript( "arguments[0].onclick=function(){alert('js has been execute!');}", ele); // add js on the web element参考: http://www.51testing.com/html/15/n-853215.html
String js="var len= window.localStorage.length;return len;"; Long result=(Long)((JavascriptExecutor)driver).executeScript(js); System.out.println("---input title---"+result);
driver.get("http://www.baidu.com"); //利用webdriver键入搜索关键字 //driver.findElement(By.id("kw")).sendKeys("yeetrack"); //利用js代码键入搜索关键字 ((JavascriptExecutor)driver).executeScript("document.getElementById(\"kw\").value=\"yeetrack\""); //利用js代码取出关键字 String keyword = (String) ((JavascriptExecutor)driver).executeScript("var input = document.getElementById(\"kw\").value;return input"); System.out.println(keyword); driver.findElement(By.id("su")).click();
Object response = ((JavascriptExecutor) driver).executeAsyncScript( "var callback = arguments[arguments.length - 1];" + "var xhr = new XMLHttpRequest();" + "xhr.open('GET', '/resource/data.json', true);" + "xhr.onreadystatechange = function() {" + " if (xhr.readyState == 4) {" + " callback(xhr.responseText);" + " }" + "}" + "xhr.send();"); JSONObject json = new JSONObject((String) response); assertEquals("cheese", json.getString("food"));
driver.get("file:///C:/test.html"); boolean flag =(boolean)(driver_js).executeScript("return typeof jQuery =='undefined'"); if (flag) { driver_js.executeScript("var jq =document.createElement('script');" + "jq.type ='text/javascript'; " +"jq.src ='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js';" +"document.getElementsByTagName('head')[0].appendChild(jq);"); Thread.sleep(3000); }
<video id="h5v-video-ID" width="100%" height="100%" preload="meta" x-webkit-airplay="allow" webkit-playsinline="true" autoplay="" src="http://XXX.mp4"><p class="no-support">抱歉,您的浏览器不支持HTML5 video</p></video> var myVideo=document.getElementById("h5v-video-ID"); myVideo.pause(); myVideo.play();
<span style="font-family: 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微软雅黑, sans-serif; line-height: 27.2px;">myVideo.width=560;//设置视频大小</span>
alert(myVideo.src);//播放源webdriver控制视频播放:
WebElement video = DriverFactory.findById("h5v-video-ID"); JavascriptExecutor jse= (JavascriptExecutor)driver; String src=(String)jse.executeScript("return arguments[0].currentSrc", video); Assert.assertEquals("http://XXX.mp4", src); jse.executeScript("return arguments[0].play()", video); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } jse.executeScript("return arguments[0].pause()", video);
WebDriver driver = new AndroidDriver(); ((Rotatable)driver).rotate(ScreenOrientation.LANDSCAPE); driver.get("url");
<span style="white-space:pre"> </span>driver.get("url"); ((Rotatable)driver).rotate(ScreenOrientation.PORTRAIT); TouchActions touch = new TouchActions(driver); touch.scroll(0, 800).build().perform();//向下滚动800像素