selenium 笔记 --- 常用操作【java】

一、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 的异常。】

actions.release() 释放鼠标
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.comwww.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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容