[Python 应用:爬虫] selenium 之 鼠标操作(ActionChains)

本文内容参考:https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.action_chains.html

 

ActionChains 是什么?

ActionChains 是selenium 中实现低层次的自动化操作的工具,比如像鼠标的移动,鼠标的点击操作,按键操作,文本菜单操作等都可以实现。同时一些更为复杂的操作也可以实现,比如悬停,拉拽,下拉。

 

要使ActionChains所进行的命令集(可以是一系列命令)执行需要在后面加上perform()

 

典型的代码(串联式)如下:

menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

典型的代码(累进式):

 menu = driver.find_element_by_css_selector(".nav")

  hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

 actions = ActionChains(driver)

 actions.move_to_element(menu)

 actions.click(hidden_submenu)

 actions.perform()

 

 

ActionChains 怎么用?

1.  创建一个新的 ActionChains:                        

actions ActionChains(driver)(drive 为创建的浏览器对象)

2.  鼠标左击:                                                                    

actions.click(on_element)

3.  鼠标左键常按:                                                             

actions.click_and_hold(on_element)

4.  鼠标右击:                                                                     

actions.context_click(on_element=None)

5.  鼠标双击:                                                                                                        

actions.double_click(on_element)

6.  鼠标按住左键从起始元素移动到目标元素  , .

actions.drag_and_drop(sourcetarget)

7.  鼠标按住左键从起始元素移动一定的偏移量  .

actions.drag_and_drop_by_offset(source,xoffset,yoffset)                                        

8.  按住某个键不放(只能是    Control, Alt and Shift) ,

actions.key_down(valueelement=None)

   例如:按 Control+c

      ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()

9.  松开某个键(与上面的key_down)对应                     

actions .key_up(value,element=None)

10. 移动鼠标                                                                                     

actions.move_by_offset(xoffset, yoffset)

11. 移动鼠标到某个元素         

actions.move_to_element(to_element)

12.  移动鼠标到某个元素左上角偏移一定量的位置      

actions.move_to_element_with_offset(to_element, xoffset, yoffset)

13.  暂停所有输入        

actions.pause(seconds)

14.  执行所有的操作     

actions.perform()

15.  松开鼠标     

actions.release(on_element=None)

16.  清空所有的操作     

actions.reset_actions()

17.  在鼠标停留位置输入      

 ctions.send_keys(*keys_to_send)

18 .在指定元素处输入     

 actions.send_keys_to_element(element, *keys_to_send)

 

posted @ 2019-07-09 21:24  Nsubmarine  阅读(368)  评论(0编辑  收藏  举报