一、selenium 动作
1、浏览器窗口控制:
// 前置
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com"); // 打开指定页面地址
// 窗口最大化
driver.manage().window().maximize()
// 指定窗口大小
Dimension arg0 = new Dimension(800, 480);
driver.manage().window().setSize(arg0);
// 模拟浏览器返回
driver.navigate().back();
// 同上一步意思相反
driver.navigate().forward();
// 模拟浏览器刷新
driver.navigate().refresh();
// 关闭浏览器
driver.quit();
2、常用元素操作:
方法 |
介绍 |
getText() |
获取元素文本信息 |
sendKeys() |
输入框 or 文本框内容输入 |
# sendKeys 示例:
driver.findElement(By.className("username")).sendKeys("helloword");
clear() |
清除输入框 or 文本框内容 |
click() |
点击 |
submit() |
提交,跟click类似 |
getAttribute() |
获取某个属性的值 |
# getAttribute()
# 源码:
<html>
<body>
<input class="hello" type="text" placeholder="hello world !!!!"/>
</body>
</html>
# 示例:
String a = driver.findElement(By.className("hello")).getAttribute("placeholder");
System.out.println(a);
# 输出:
hello world !!!!
getSize() |
获取元素的 宽 高 |
getTagName() |
获取属性的标签名称 |
driver.getTitle() |
获取网页title |
isDisplayed() |
判断页面元素是否存在 【 注:若元素存在返回 true , 不存在会抛 NoSuchElementException 异常,表示找不到元素】 |
#还有一种判断元素是否存在
WebElement element = driver.findElement(By.className("movable"));
// 判断 element 不为 null
if (!ObjectUtils.isEmpty(element)){
System.out.println(element.getText());
}else {
System.out.println("元素不存在");
}
isEnabled() |
判断元素是否可用 , 返回 true 和 false |
isSelected() |
判断元素是否为选中状态 ,使用场景:单选框,下拉列表,复选框等 |
3、Actions 操作:
3.1、创建 Actions 对象:
Actions actions = new Actions(driver);
3.2、Actions 模拟鼠标操作:
# 注意这里列出比较常用的action鼠标操作
方法 |
介绍 |
actions.perform() |
所有动作执行操作,这个必须加,不然actions不会执行任何操作 |
actions.build() |
编译构建动作,建议附带 |
actions.click(WebElement target) |
鼠标左键点击指定元素 |
actions.contextClick(WebElement target) |
鼠标右键点击指定元素 |
actions.doubleClick(WebElement target) |
鼠标双击指定的元素 |
actions.clickAndHold(WebElement element) |
鼠标左键点击不释放,此动作可以当做鼠标悬停使用 |
actions.dragAndDrop(source,target) |
鼠标拖拽动作,将 source 元素拖放到 target 元素的位置。 |
actions.dragAndDrop(source,xOffset,yOffset) |
鼠标拖拽动作,将 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 为横坐标,yOffset 为纵坐标 【注意:拖动事件chrome好像不怎么支持】
|
actions.moveToElement(toElement) |
将鼠标移到 toElement 元素中点 |
actions.moveToElement(toElement,xOffset,yOffset) |
这里的 (xOffset, yOffset) 是以元素 toElement 的左上角为 (0,0) 开始的 (x, y) 坐标轴。 |
actions.moveByOffset(xOffset,yOffset) |
以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴 |
【注意: 这里需要注意,如果 xOffset 为负数,表示横坐标向左移动,yOffset 为负数表示纵坐标向上移动。而且如果这两个值大于当前屏幕的大小,鼠标只能移到屏幕最边界的位置同时抛出 MoveTargetOutOfBoundsExecption 的异常。】
3.2、Actions 模拟键盘操作:
方法 |
介绍 |
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 键 |
说明:个人感觉键盘模拟操作用的不多,所以不多做介绍,需要可 www.google.com 或 www.baidu.com查询
4、selenium 界面截图
# 主体:
((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
# 示例:
try {
//返回一个文件,需要File接收
File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
//时间格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//将突破copy到指定路径下
FileUtils.copyFile(file, new File("D:\\IEDAProject\\img\\" + sdf.format(new Date()) + imgName + ".png"));
}catch (IOException io){
io.printStackTrace();
}
4、selenium操作vedio/audio元素
方法 |
介绍 |
addTextTrack() |
向音频 or 视频添加新的文本轨道 |
canPlayType() |
检测浏览器是否能播放指定的音频 or 视频类型 |
load() |
重新加载音频 or 视频元素 |
play() |
开始播放音频 or 视频 |
pause() |
暂停当前播放的音频 or 视频 |
# 示例
WebDriver driver = new ChromeDriver();
// 获取视频元素
WebElement element = driver.findElement(By.tagName("video"));
// 将driver 转换为 javascript 类型
JavascriptExecutor jse = (JavascriptExecutor) driver;
// play() 开始播放
jse.executeScript("return arguments[0].play()" , element);
5、 selenium 操作滚动条
- 5.1 、div内的滚动条操作
方法 |
描述 |
scrollHeight |
获取滚动条高度 |
scrollWidth |
获取横向滚动条宽度 |
scrollLeft=1000 |
控制横向滚动条位置【1000是指位置的值,根据自己需求修改】 |
scrollTop=10000 |
控制纵向滚动条位置【1000是指位置的值,根据自己需求修改】 |
//注意 scroll 是指所定位元素的名称,ByClassName 代表的是定位元素的类型
String js = "document.getElementsByClassName(\"scroll\")[0].scrollTop=10000";
// 下面的代码有两种写法:
((JavascriptExecutor) driver).executeScript(js);
// or 根据自己习惯写就好了
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript(js);
- 5.1 、 Actions 的 sendKeys() 来操作滚动条
# 前置
Actions action = new Actions(driver);
// 向下滚动致最底部
action.sendKeys(Keys.ARROW_DOWN)
.sendKeys(Keys.END)
.perform();
// 向上滚动致最顶部
action.sendKeys(Keys.PAGE_UP)
.sendKeys(Keys.HOME)
.perform();
http://www.cnblogs.com/xinxin1994/category/1049549.html