博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium-ActionChains Api接口详解
阅读量:4064 次
发布时间:2019-05-25

本文共 8332 字,大约阅读时间需要 27 分钟。

ActionChains

有时候我们在通过Selenium做UI自动化的时候,明明能够在DOM树内看到这个元素,但是我在通过driver click、sendkey的时候,就是点击不到或无法输入字符串。实际上这是由于WEB中某些元素需要通过一系列连贯的操作才能处于可以点击的状态,driver提供的click方法是每次都只执行一个命令操作,而我们需要连贯的操作。或者经常遇到那种,需要鼠标悬浮后,要操作的元素才会出现的某种场景,那么我们就要模拟鼠标悬浮到某一个位置,做一系列的连贯操作,这里就要应用Selenium提供的ActionChains模块

具体使用方法参考官方文档: 

或某大佬翻译的中文文档:

引入方式

#引入方式一from selenium.webdriver.common.action_chains import ActionChains#引入方式二from selenium.webdriver import ActionChains

实际上ActionChains这个模块的实现的核心思想就是,当你调用ActionChains的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个List里,当你调用perform()方法时,队列中的时间会依次执行。(注:推荐一个尺子工具,MeasulerIt)

ActionChains方法列表

click(on_element=None) ——单击鼠标左键

click_and_hold(on_element=None) ——点击鼠标左键,不松开

context_click(on_element=None) ——点击鼠标右键

double_click(on_element=None) ——双击鼠标左键

drag_and_drop(source, target) ——拖拽到某个元素然后松开

drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开

key_down(value, element=None) ——按下某个键盘上的键

key_up(value, element=None) ——松开某个键

move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

move_to_element(to_element) ——鼠标移动到某个元素

move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置

perform() ——执行链中的所有动作

release(on_element=None) ——在某个元素位置松开鼠标左键

send_keys(*keys_to_send) ——发送某个键到当前焦点的元素

send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素

drag_and_drop(鼠标拖动)

# 将source元素拖放至target元素处,参数为两个elementObjActionChains(driver).drag_and_drop(source=source,target=target) # 将一个source元素 拖动到针对source坐上角坐在的x y处 可存在负宽度的情况和负高度的情况ActionChains(driver).drag_and_drop_by_offset(source, x, y) # 这种也是拖拽的一种方式,都是以源元素的左上角为基准,移动坐标ActionChains(driver).click_and_hold(dom).move_by_offset(169,188).release().perform()

move_to_element

# 鼠标移动到某一个元素上,结束elementObjActionChains(driver).move_to_element(e) # 鼠标移动到制定的坐标上,参数接受x,yActionChains(driver).move_by_offset(e['x'],e['y']) 例:driver = webdriver.Chrome()driver.maximize_window()driver.get('http://www.baidu.com')time.sleep(2)# driver.execute_script('document.body.scrollTop=0')driver.execute_script('document.documentElement.scrollTop')time.sleep(1) a = driver.find_element_by_id('a').location dis = driver.find_element_by_id('dis1') ActionChains(driver).move_by_offset(a['x'],a['y']).double_click(dis).perform()

click

# 单击事件,可接受elementObjActionChains(driver).click() # 双击事件,可接受elementObjActionChains(driver).double_click() # 点击鼠标右键ActionChains(driver).context_click() # 点击某个元素不松开,接收elementObjActionChains(driver).click_and_hold() # # 某个元素上松开鼠标左键,接收elementObjActionChains(driver).release()

转载地址:http://rivji.baihongyu.com/

你可能感兴趣的文章
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
能源化工要怎么管控核心数据
查看>>