【问题标题】:Simulate mouse movements in Selenium using Python使用 Python 在 Selenium 中模拟鼠标移动
【发布时间】:2018-12-22 17:32:18
【问题描述】:

我正在使用 Seleneium 抓取一些网站,这些网站会跟踪我的鼠标移动,并要求我使用鼠标点击周围。是否可以在不移动我的实际鼠标的情况下模拟被 JavaScript 识别为鼠标移动的鼠标移动? IE。这样我就可以运行多个脚本并能够使用我自己的鼠标来做其他事情?

我曾考虑过使用虚拟机,但这似乎太过分了,尤其是因为我需要同时运行多个。

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

【问题讨论】:

标签: python selenium


【解决方案1】:

您可以通过 selenium-Python Binding 中的 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. send_keys

【讨论】:

  • 两个问题 1. 这是否会移动我的实际鼠标 2. 如果没有,这是否会被给定网站检测为常规鼠标移动?
  • 通过使用它来模拟鼠标操作,例如右键单击或双击。理想情况下,您应该让脚本在不使用实际键盘和实际鼠标的情况下运行。 Ans 1. 模拟您的实际鼠标。您仍然可以使用您的鼠标,但我不建议这样做。 2.如果网站限制太多,即能抓到你的普通鼠标,恐怕会被网站检测到。
  • 好的 2 个后续问题。 1. 为什么在动作链运行时不使用常规鼠标? 2.有没有办法绕过检测的问题?
  • Ans 1. 因为,我可能会遇到这个异常Element is not clickable at this point other element would receive the click at (x, y) 。当然是为了程序的顺利执行。 2. 您必须与开发人员交谈,为您提供一个无法检测到鼠标移动的测试环境。
  • 我正在抓取相当大的网站,他们无法回复任何电子邮件或查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
相关资源
最近更新 更多