Имитация щелчка пользователя по этой конкретной веб-ссылке не удалась

Полагаю, это довольно сложный вопрос.

Моя целевая веб-страница: нажмите здесь

Вы видите, что есть кнопка с текстом «Jouw zoekertje GRATIS PLAATSEN» с оранжевым фоном. Если вы нажмете на эту ссылку в своем обычном браузере, она перейдет на «http://www2.kapaza.be/nl/ai". Эта часть в порядке.

Теперь я делаю то же самое на QWebView в Qt. Я думаю, что не имеет значения, Qt это или любая другая среда. Я верю, что он будет вести себя так же. Что происходит, так это то, что когда я загружаю эту ссылку в свой QWebView, она просто ничего не загружает. Что-то продолжает загружаться, но ничего видимого не выходит. Я думаю, что это своего рода защита сайта. В моем приложении мне нужно нажать на эту ссылку программно. До сих пор я делал подобное много раз для других ссылок или кнопок, но ни одна из них не работает с этой целевой ссылкой. Может ли кто-нибудь сказать мне, в чем может быть проблема?

Сначала я подумал, что это из-за файлов cookie. Я включил их в своем программном обеспечении, но все равно.


person Dundar    schedule 19.07.2014    source источник


Ответы (1)


Из моего опыта автоматизации\моделирования с использованием QWebView - ни один сайт не является пуленепробиваемым, если вы делаете это правильно. Особенно, когда речь идет об имитации кликов, прокрутки и т. д. (действия на стороне клиента).

Итак, я просто попытался сделать то, что вы пытались сделать, и это сработало, страница загружена, кнопка нажата и перенаправлена.

Это код, который сделал свое дело:

def tracker(self):
  return self.webView.page().currentFrame().documentElement()

qweb.load('http://www.kapaza.be/nl/index.htm')
button = qweb.tracker().findFirst('a[class="btn  homepage_btn"]')
button.evaluateJavaScript('this.click();')

Поскольку я не вижу очевидной проблемы, возможно, вы просто допустили небольшую ошибку, поэтому может помочь приведенный выше код.

Если это не поможет, вот несколько вещей, которые следует учитывать:

  • Прокси — если вы подключены через прокси с QWebView, некоторые страницы могут не загружаться или никогда не перестанут загружаться. Попробуйте выключить или переключить его (выключите, чтобы быть уверенным...).
  • Настройки - это может быть связано с изменением настроек QWebView. Я бы попробовал добавить: webView.settings().setAttribute(QWebSettings.AutoLoadImages, False)
  • Попробуйте вызвать "перезагрузку" через пару секунд. Мне пару раз помогло:
...
wait(10)
webView.reload()

В общем, это лишь одна из вещей, которые иногда случаются с QWebView. Вам просто нужно ознакомиться с обходными путями, научиться идентифицировать эти события и эффективно с ними справляться. Суть в том, что я не могу найти ничего конкретно неправильного на странице, и это хорошая новость! вы можете делать с ним все, что хотите. Попробуйте шаги, которые я упомянул, и если это не сработает, отправьте соответствующие части вашего кода.

Удачи

person Matanoga    schedule 09.09.2014