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 или любой отладчик. И да, у меня были ошибки в прошлом, которые всегда решались путем изменения моего кода.

Другие вопросы по тегам