一、ActionChains所有行为行为操作
selenium中的ActionChains使用链式模型,即可以实现简单的交互行为,例如鼠标移动,鼠标点击事件,键盘输入,以及内容菜单交互。同时也可以完成复杂的类似于鼠标悬停和拖拽等动作。
当在ActionChains对象上调用行为方法时,这些行为会存储在ActionChains对象的一个队列里。调用perform()时,这些动作就以他们队列的顺序来触发。
例如:ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
ActionChains共有17个方法,全部如下:
键盘操作 | send_keys(*keys_to_send) | 向当前的焦点元素发送键 |
send_keys_to_element(element,*keys_to_send) | 向指定的元素发送键 | |
key_down(value,element=None) | 只按下键盘,不释放 | |
key_up(value,element=None) | 释放键 | |
鼠标操作 | click(on_element=None) | 鼠标左键点击某元素 |
click_and_hold(on_element=None) | 鼠标左键点击一个元素并且保持 | |
double_click(on_element=None) | 鼠标左键双击 | |
context_click(on_element=None) | 点击鼠标右键, 在调用时需要指定元素定位 | |
drag_and_drop(source, target) | 鼠标左键点击 | |
drag_and_drop_by_offset(source, xoffset,yoffset) | 拖拽目标元素到指定的偏移点释放 | |
move_by_offset(xoffset,yoffset) | 移动鼠标的位置 | |
move_to_element(to_element) | 把鼠标移到一个元素的中间 | |
move_to_element_with_offset(to_element, xoffset, yoffset) | 把鼠标移到一个元素的相对位置 | |
release(on_element=None) | 释放一个元素上的鼠标按键 | |
其他 | reset_actions() | 清除存储的行为 |
pause(seconds) | 暂停所有动作 | |
perform() | 执行所有 ActionChains 中存储的行为,可以理解成是对整个操作的提交动作 |
二、常用JS操作
selenium可以使用executeScript方法执行javacript操作,常见操作有:
1、操作垂直滚动条
String scroll = "document.documentElement.scrollTop=" + "y";
JavascriptExecutor js=(JavascriptExecutor) driver;
js.executeScript(scroll);
2、操作水平滚动条
String scroll = "document.documentElement.scrollLeft=" + "x";
JavascriptExecutor js=(JavascriptExecutor) driver;
js.executeScript(scroll);
3、同时操作2个坐标,水平移动到100像素,向下移动到500像素
((JavascriptExecutor)driver).executeScript("window.scrollTo(x,y)");
4、采用相对移动的方式
((JavascriptExecutor)driver).executeScript("window.scrollBy(x,y)");
5、如果操作的是div的scroll同样可以实现
String scroll = "document.getElementById("location").scrollLeft=x";
JavascriptExecutor js=(JavascriptExecutor)driver;
js.executeScript(scroll);
6、操作富文本
String text = "text"; //输入的内容
String js = "var sum=document.getElementById('id'); sum.value='" + text + "';";
((JavascriptExecutor)driver).executeScript(js);
7、操作Html5视频
JavascriptExecutor js=(JavascriptExecutor) driver;
//获取视频url
js.executeScript("return arguments[0].currentSrc;",video);
//播放视频
js.executeScript("return arguments[0].play()", video);
//暂停视频
js.executeScript("arguments[0].pause()", video);