DOM 元素定位
定位过程
- WebDriver对象的findElement函数定义一个Web页面元素;
- findElements方法可以定位页面的多个元素;
- 使用WebElement对象来存储定位的元素,以便后续操作;
※ 如果使用 By.tagName,By.className 定位,只会返回第一个匹配元素,但元素class元素内容不止一个,而是类似<div class="btn-login btn">可以使用 By.cssSelector 的方式定位;
示例
WebDriver driver = new FirefoxDriver();
driver.get("http://www.assad.site");
WebElement element1 = driver.findElement(By.id("login")); //通过id获取元素
WebElement element2 = driver.findElement(By.xpath(".//*[@id='content-detail']/div[6]/div")); //通过xpath获取元素
WebElement element3 = driver.findElement(By.className("btn")); //通过cssName获取元素
DOM 元素操作
示例
WebDriver driver = new FirefoxDriver();
driver.get("http://www.assad.site");
//键盘输入事件
WebElement element1 = driver.findElement(By.id("login-input"));
element1.sendKey("hello world");
//鼠标点击事件
WebElement element1 = driver.findElement(By.id("submit"));
element1.click();
更加复杂的键盘,鼠标操作
鼠标操作事件
1、鼠标左键点击
Actions action = new Actions(driver);
// 鼠标左键点击指定的元素
action.click(driver.findElement(By.id("test")));
// 鼠标左键在坐标为(300,400)位置做单击操作
action.moveByOffset(300,400).
click();
2、鼠标右键点击
Actions action = new Actions(driver);
// 鼠标右键点击指定的元素
action.contextClick(driver.findElement(By.id("test")));
// 鼠标右键在坐标为(300,400)位置做单击操作
action.moveByOffset(300,400).contextClick();
3.鼠标双击操作
Actions action = new Actions(driver);
// 鼠标双击击指定的元素
action.doubleClick(
));// 鼠标在坐标为(300,400)位置做双击操作
action.moveByOffset(300,400).doubleClick();
4. 鼠标悬停操作
Actions action = new Actions(driver);
// 鼠标悬停在 onElement 元素的位置
action.clickAndHold(driver.findElement(By.id("test"));
// 鼠标悬停坐标位置
action.moveByOffset(300,400).clickAndHold();
5、鼠标释放操作
Actions action = new Actions(driver);
action.release();// 释放鼠标
6、鼠标移动操作
Actions action = new Actions(driver);
// 将鼠标移到 toElement 元素中点
action.moveToElement(toElement);
// 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴
action.moveByOffset(xOffset,yOffset);
7、鼠标拖拽动作
Actions action = new Actions(driver);
// 鼠标拖拽动作,将 source 元素拖放到 target 元素的位置
action.dragAndDrop(source,target);
// 鼠标拖拽动作,将 source 元素拖放到 (xOffset, yOffset) 位置
action.dragAndDrop(source,xOffset,yOffset);
键盘操作事件
1. 普通键盘模拟,使用 sendKeys(keysToSend) ,如正常的键盘按键和 空格,Backspace等;
Actions action = new Actions(driver);
//在网页视图中执行按键操作
action.sendKeys(Keys.SPACE);// 模拟按下并释放空格键
action.sendKeys(Keys.TAB);// 模拟按下并释放 TAB 键
//对某个DOM元素执行按键操作(如input表单等)
action.sendKeys(element,"String would be send");
2、组合键模拟,使用 keyDown(key)、keyUp(key) 分别执行键盘按键的按下和释放;
Actions action = new Actions(driver);
action.keyDown(Keys.CONTROL);// 按下 Ctrl 键
action.keyDown(Keys.SHIFT);// 按下 Shift 键
action.keyDown(Key.ALT);// 按下 Alt 键
action.keyUp(Keys.CONTROL);// 释放 Ctrl 键
action.keyUp(Keys.SHIFT);// 释放 Shift 键
action.keyUp(Keys.ALT);// 释放 Alt 键
※ 如果action操作没有反应,可以对Action对象调用perform()方法