问题:
之前看到一个回答是因为selenium框架被前段检测了,然后用PyQt5制作浏览器去实现爬虫,我现在也遇到了同样的问题,但是问题是在我不知道如何用Js的语句去模拟鼠标移动某个元素。
代码:
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl
import pyautogui
import time
import sys
app = QApplication([])
view = QWebEngineView()
view.load(QUrl("url"))
view.show()
page = view.page()
#a = 0
#global a
def test():
page.runJavaScript("$('#account').val(123)")
page.runJavaScript("$('#password').val(123)")
page.runJavaScript("$('#btn-login').trigger('click')")
time.sleep(1)
# page.runJavaScript("alert($('#distance').html())")
page.runJavaScript("$('.smallImg').trigger('click')")
#view.loadFinished.connect(test)
app.exec_()
就是需要移动一个class名为smallImg的元素, 上面的输入和点击登录都完成了,现在卡在移动那块。
具体的移动需要:
鼠标移动到smallImg这个元素的坐标,点击并水平拖动一定的距离,然后释放。具体的移动距离可以先不考虑识别图片,我可以获取到需要移动的距离。
不知道你所说的 "selenium 被检测到" 是什么情况,不过 selenium 提供了拖放功能
参考 https://selenium-python.readt...
据我所知,目前(2018年8月10日)还没有 javascript 能实现真正可用的拖放效果。
不过你可以参考下面的文档,生成拖放事件,然后在指定元素上触发试试
https://developer.mozilla.org...
题外话:这类问题的难点通常不在拖放的起点或终点,你可能需要更精确的手段去控制整个拖放过程,比如在浏览器外生成鼠标事件。