Selenium-actions

1、鼠标事件app

清单 1. 鼠标左键点击 测试

 Actions action = new Actions(driver);action.click();// 鼠标左键在当前停留的位置作单击操做  spa

action.click(driver.findElement(By.name(element)))// 鼠标左键点击指定的元素 code

 

清单 2. 鼠标右键点击 orm

 Actions action = new Actions(driver);  blog

 action.contextClick();// 鼠标右键在当前停留的位置作单击操做  教程

action.contextClick(driver.findElement(By.name(element)))// 鼠标右键点击指定的元素 事件

 

清单 3. 鼠标双击操做 ip

 Actions action = new Actions(driver);  element

 action.doubleClick();// 鼠标在当前停留的位置作双击操做  

 

var script = document.createElement('script'); 

script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);    

action.doubleClick(driver.findElement(By.name(element)))// 鼠标双击指定的元素 

 

清单 4. 鼠标拖拽动做 

 Actions action = new Actions(driver);  

// 鼠标拖拽动做,将 source 元素拖放到 target 元素的位置。  action.dragAndDrop(source,target); 

// 鼠标拖拽动做,将 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 为横坐标,yOffset 为纵坐标。 

action.dragAndDrop(source,xOffset,yOffset); 

在这个拖拽的过程当中,已经使用到了鼠标的组合动做,首先是鼠标点击并按住 

(click-and-hold) source 元素,而后执行鼠标移动动做 (mouse move),移动到 target 元素位置或者是 (xOffset, yOffset) 位置,再执行鼠标的释放动做 (mouse release)。因此上面的方法也能够拆分红如下的几个执行动做来完成: 

action.clickAndHold(source).moveToElement(target).perform();   action.release(); 

 

清单 5. 鼠标悬停操做 

 Actions action = new Actions(driver);  

 action.clickAndHold();// 鼠标悬停在当前位置,既点击而且不释放  action.clickAndHold(onElement);// 鼠标悬停在 onElement 元素的位置 

action.clickAndHold(onElement) 这个方法其实是执行了两个动做,首先是鼠标移动到元素 onElement,而后再 clickAndHold, 因此这个方法也能够写成 action.moveToElement(onElement).clickAndHold()。 

 

清单 6. 鼠标移动操做 

 Actions action = new Actions(driver);  

 action.moveToElement(toElement);// 将鼠标移到 toElement 元素中点 // 将鼠标移到元素 toElement 的 (xOffset, yOffset) 位置, 

//这里的 (xOffset, yOffset) 是以元素 toElement 的左上角为 (0,0) 开始的 (x, y) 坐标轴。 

 var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;

 action.moveToElement(toElement,xOffset,yOffset) 

// 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴  action.moveByOffset(xOffset,yOffset); 

action.moveByOffset(xOffset,yOffset) 这里须要注意,若是 xOffset 为负数,表示横坐标向左移动,yOffset 为负数表示纵坐标向上移动。并且若是这两个值大于当前屏幕的大小,鼠标只能移到屏幕最边界的位置同时抛出 MoveTargetOutOfBoundsExecption 的异常。 鼠标移动操做在测试环境中比较经常使用到的场景是须要获取某元素的 flyover/tips,实际应用中不少 flyover 只有当鼠标移动到这个元素以后才出现,因此这个时候经过执行 

moveToElement(toElement) 操做,就能达到预期的效果。可是根据我我的的经验,这个方法对于某些特定产品的图标,图像之类的 flyover/tips 也不起做用,虽然在手动操做的时候移动鼠标到这些图标上面能够出现 flyover, 可是当使用 WebDriver 来模拟这一移动操做时,虽然方法成功执行了,可是 flyover 却出不来。因此在实际应用中,还须要对具体的产品页面作相应的处理。

 

 清单 7. 鼠标释放操 

 Actions action = new Actions(driver);   action.release();// 释放鼠标 

 

PS:通常只使用移动的事件,不点击的状况下鼠标事件能够不释放

2、模拟键盘

就是输入键盘的键

// 模拟键盘操做
    public void ActionKeys() {
        Actions actions = new Actions(driver);
        driver.get("https://www.baidu.com");
        WebElement input = driver.findElement(By.id("kw"));
          input.sendKeys("selenium 教程");
          common.WaitSeconds(2000);
          input.sendKeys(Keys.ENTER);// 百度输入了以后输入enter键
    }
本站公众号
   欢迎关注本站公众号,获取更多信息