Segfault с использованием метода nativeClickAt() в модуле Spynner
Я не уверен, как использовать nativeClickAt()
метод, чтобы нажать в произвольном местоположении.
В классе Spynner, доктор сказал:
"""Click on an arbitrar location of the browser.
@param where: where to click (QPoint)
@param real: if not true coordinates are relative to the window instead
of the screen
@timeout seconds: seconds to wait after click"""
Я искал документ QT, чтобы выяснить, что такое QPoint
объект. Так что, похоже, координаты х, у.
Что я пробовал до сих пор:
import spynner
from PyQt4 import QtCore
browser = spynner.Browser(
embed_jquery = True,
debug_level = spynner.DEBUG
)
(...)
place = QtCore.QPoint(311,443)
print place # PyQt4.QtCore.QPoint(311, 443)
browser.nativeClickAt(place, 3, real=True)
Но когда я запускаю скрипт, я получаю ошибку segfault.
Любая помощь будет очень признательна.
2 ответа
Мы обсудили оффлайн этого не публичного сценария.
Что мы сделали:
- У вас должен быть пользовательский интерфейс для отправки необработанных событий кликов:
browser.show()
- Вы не должны скрывать окно при выполнении скрипта, иначе он щелкнет в void -> segfault.
Собственный щелчок в значительной степени зависит от состояния браузера и его фреймов, которые могут стать недоступными, когда вы будете запускать событие, вызывая ошибку.
Поскольку это действительно зависит от варианта использования, самое простое - иметь воспроизводимый тест!
Тем не менее, я проверю, что метод ведет себя правильно после обновления 2.0.
Также убедитесь, что у вас есть последний спиннер!
Кроме того, чтобы отследить ошибки spynner, когда происходят ошибки segfaults, лучше всего всегда использовать gdb или любой отладчик. И да, у меня были ошибки в прошлом, которые всегда решались путем изменения моего кода.