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

本文介绍了如何使用Selenium进行DOM元素定位,包括通过WebDriver的findElement和findElements方法找到页面元素,并详细讲解了鼠标右键点击、双击及悬停等交互操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.className 定位,只会返回第一个匹配元素,但元素class元素内容不止一个,而是类似<div class="btn-login btn">可以使用 By.cssSelector 的方式定位;

示例
  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()方法




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值