Selenium(2): DOM元素定位、操作

DOM 元素定位

定位过程
  • WebDriver对象的findElement函数定义一个Web页面元素;
  • findElements方法可以定位页面的多个元素;
  • 使用WebElement对象来存储定位的元素,以便后续操作;

id 定位

driver.findElement(By.id(“id的值”));

name定位

driver.findElement(By.name(“name的值”));

xpath 方式定位

driver.findElement(By.xpath(“xpath表达式”));

Class 名称定位

driver.findElement(By.className(“class属性”));

css 方式定位

driver.findElement(By.cssSelector(“css表达式”));

TagName 标签名称定位

driver.findElement(By.tagName(“标签名称”));

Jquery表达式定位

Js.executeScript(“return jQuery.find(“jquery表达式”)”)

链接的全部文字定位

driver.findElement(By.linkText(“链接的全部文字”));

链接的部分文字定位

driver.findElement(By.partialLinkText(“链接的部分文字”));

※ 如果使用 By.tagName,By.c lassName 定位,只会返回第一个匹配元素,但元素class元素内容不止一个,而是类似

示例
 
    
  1. WebDriver driver = new FirefoxDriver();
  2. driver.get("http://www.assad.site");
  3. WebElement element1 = driver.findElement(By.id("login")); //通过id获取元素
  4. WebElement element2 = driver.findElement(By.xpath(".//*[@id='content-detail']/div[6]/div")); //通过xpath获取元素
  5. WebElement element3 = driver.findElement(By.className("btn")); //通过cssName获取元素


DOM 元素操作

鼠标单击(用于按钮等)

webelement.click();
键盘输入(用于文本框等) webelement.setKey("输入内容字符串");
示例
 
    
  1. WebDriver driver = new FirefoxDriver();
  2. driver.get("http://www.assad.site");
  3. //键盘输入事件
  4. WebElement element1 = driver.findElement(By.id("login-input"));
  5. element1.sendKey("hello world");
  6. //鼠标点击事件
  7. WebElement element1 = driver.findElement(By.id("submit"));
  8. element1.click();



更加复杂的键盘,鼠标操作

鼠标操作事件
1、鼠标左键点击
 
    
  1. Actions action = new Actions(driver);
  2. // 鼠标左键点击指定的元素
  3. action.click(driver.findElement(By.id("test")));
  4. // 鼠标左键在坐标为(300,400)位置做单击操作
  5. action.moveByOffset(300,400).click();
2、鼠标右键点击
 
    
  1. Actions action = new Actions(driver);
  2. // 鼠标右键点击指定的元素
  3. action.contextClick(driver.findElement(By.id("test")));
  4. // 鼠标右键在坐标为(300,400)位置做单击操作
  5. action.moveByOffset(300,400).contextClick();
3.鼠标双击操作
 
      
  1. Actions action = new Actions(driver);
  2. // 鼠标双击击指定的元素
  3. action.doubleClick());
  4. // 鼠标在坐标为(300,400)位置做双击操作
  5. action.moveByOffset(300,400).doubleClick();
4. 鼠标悬停操作
 
        
  1. Actions action = new Actions(driver);
  2. // 鼠标悬停在 onElement 元素的位置
  3. action.clickAndHold(driver.findElement(By.id("test"));
  4. // 鼠标悬停坐标位置
  5. action.moveByOffset(300,400).clickAndHold();
5、 鼠标释放操作
 
    
  1. Actions action = new Actions(driver);
  2. action.release();// 释放鼠标
6、 鼠标移动操作
 
     
  1. Actions action = new Actions(driver);
  2. // 将鼠标移到 toElement 元素中点
  3. action.moveToElement(toElement);
  4. // 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴
  5. action.moveByOffset(xOffset,yOffset);
7、 鼠标拖拽动作
 
      
  1. Actions action = new Actions(driver);
  2. // 鼠标拖拽动作,将 source 元素拖放到 target 元素的位置
  3. action.dragAndDrop(source,target);
  4. // 鼠标拖拽动作,将 source 元素拖放到 (xOffset, yOffset) 位置
  5. action.dragAndDrop(source,xOffset,yOffset);


键盘操作事件
1. 普通键盘模拟,使用 sendKeys(keysToSend) ,如正常的键盘按键和 空格,Backspace等;
 
    
  1. Actions action = new Actions(driver);
  2. //在网页视图中执行按键操作
  3. action.sendKeys(Keys.SPACE);// 模拟按下并释放空格键
  4. action.sendKeys(Keys.TAB);// 模拟按下并释放 TAB 键
  5. //对某个DOM元素执行按键操作(如input表单等)
  6. action.sendKeys(element,"String would be send");
2、组合键模拟,使用 keyDown( key )、keyUp(key) 分别执行键盘按键的按下和释放;
 
    
  1. Actions action = new Actions(driver);
  2. action.keyDown(Keys.CONTROL);// 按下 Ctrl 键
  3. action.keyDown(Keys.SHIFT);// 按下 Shift 键
  4. action.keyDown(Key.ALT);// 按下 Alt 键
  5. action.keyUp(Keys.CONTROL);// 释放 Ctrl 键
  6. action.keyUp(Keys.SHIFT);// 释放 Shift 键
  7. action.keyUp(Keys.ALT);// 释放 Alt 键

※ 如果action操作没有反应,可以对Action对象调用perform()方法




你可能感兴趣的:(Java,Selenium-Java)