51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1365|回复: 1
打印 上一主题 下一主题

【转帖】WebDriver拾级而上(15) – 拖曳动作模拟

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-7-14 11:57:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

如何把一个元素拖放到另一个元素里面
下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的div框中。
http://koyoz.com/demo/html/drag-drop/drag-drop.htm
CODE:
  1. <font size="4"><div id="drop">
  2.     拖过来试试
  3.     <p>11111拖入</p>
  4. </div>
  5. <div id="items">
  6.     <div id="item1" class="item" style="position: absolute; left: 411px; top: 154px; display: none;">11111</div>
  7.     <div id="item2" class="item">22222</div>
  8.     <div id="item3" class="item">33333</div>
  9.     <div id="item4" class="item">44444</div>
  10.     <div id="item5" class="item">55555</div>
  11.     <div id="item6" class="item">66666</div>
  12. </div></font>
复制代码

Java代码
CODE:
  1. <font size="4">
  2. package com.test;

  3. import org.openqa.selenium.By;
  4. import org.openqa.selenium.WebDriver;
  5. import org.openqa.selenium.WebElement;
  6. import org.openqa.selenium.chrome.ChromeDriver;
  7. import org.openqa.selenium.interactions.Actions;

  8. public class Test_DragAndDrop {
  9.     public static void main(String[] args) {
  10.         WebDriver dr = new ChromeDriver();  
  11.         dr.get("http://koyoz.com/demo/html/drag-drop/drag-drop.html");
  12.          
  13.         //首先new出要拖入的页面元素对象element和目标对象target,然后进行拖入。  
  14.         WebElement element = dr.findElement(By.id("item1"));  
  15.         WebElement target = dr.findElement(By.id("drop"));  
  16.         (new Actions(dr)).dragAndDrop(element, target).perform();   
  17.          
  18.         //利用循环把其它item也拖入  
  19.         String id="item" ;  
  20.         for(int i=2;i<=6;i++){
  21.             String item = id+i;  
  22.             (new Actions(dr)).dragAndDrop(dr.findElement(By.id(item)), target).perform();  
  23.         }
  24.         //dr.quit();         
  25.     }
  26. }</font>
复制代码

=================================================
附:如何利用Actions类模拟鼠标和键盘的操作
actions类,主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作。对于这些操作,使用perform()方法进行执行。
actions类可以完成单一的操作,也可以完成几个操作的组合。
单一的操作
单一的操作是指鼠标和键盘的一个操作。如鼠标左键按下、弹起或输入一个字符串等。
前面涉及到鼠标键盘操作的一些方法,都可以使用actions类中的方法实现,比如:click,sendkeys。
CODE:
  1. <font size="4">WebElement  element = dr.findElement(By.id("test"));  
  2. WebElement  element1 = dr.findElement(By.id("test1"));  
  3. element.sendKeys("test");
  4. element1.click;</font>
复制代码

用Actions类就可以这样实现:
CODE:
  1. <font size="4">//新建一个action
  2. Actions action=new Actions(driver);
  3. //操作
  4. WebElement element=dr.findElement(By.id("test"));
  5. WebElement element1=dr.findElement(By.id("su"));
  6. action.sendKeys(element,"test").perform();
  7. action.moveToElement(element1);
  8. action.click().perform();</font>
复制代码

看起来用Actions类实现click和sendKeys有点烦索
组合操作
组合操作就是几个动作连在一起进行操作。如对一个元素的拖放。
CODE:
  1. <font size="4">(new Actions(dr)).dragAndDrop(dr.findElement(By.id(item)), target).perform();</font>
复制代码

可以直接调用dragAndDrip()方法,也可以像下面濱示的一样把几个操作放一起实现
CODE:
  1. <font size="4">Action dragAndDrop = builder.clickAndHold(someElement)
  2.        .moveToElement(otherElement)
  3.        .release(otherElement)
  4.        .build().perform();</font>
复制代码

其他鼠标或键盘操作方法可以具体看一下API里面的org.openqa.selenium.interactions.Actions类

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-5 03:58 , Processed in 0.066598 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表