使用Python模拟Selenium中的鼠标移动

时间:2018-07-14 14:12:36

标签: python selenium

我正在使用Seleneium抓取一些网站,该网站可跟踪我的鼠标运动,并要求我使用鼠标来单击。是否可以模拟被JavaScript识别为鼠标移动的鼠标移动而无需移动我的实际鼠标?即这样我可以运行多个脚本,并可以使用自己的鼠标来做其他事情?

我曾经考虑过使用虚拟机,但这似乎完全是矫kill过正,尤其是因为我需要同时运行多个虚拟机。

这与Human-like mouse movements via Selenium不同,因为这里的重点是如何模拟javascript将以常规鼠标移动方式拾取的鼠标移动,但是不会移动实际的鼠标,因此您可以运行多个脚本和/或用普通的鼠标做其他事情。

1 个答案:

答案 0 :(得分:1)

您可以通过Selenium-Python绑定中的 ActionChains 模拟鼠标操作。

假设您有一个web element,如下所示:

wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, 'someid')))  

您可以像这样使用动作链:

ActionChains(driver).move_to_element(element).perform()  

请注意,您必须导入from selenium.webdriver.common.action_chains import ActionChains才能使用操作链。

一些广泛使用的 ActionChains 方法是:

  1. context_click (右键单击)
  2. 双击
  3. 拖放并
  4. move_to_element
  5. 发送密钥