在此特定网络链接上模拟用户点击失败

时间:2014-07-19 08:35:47

标签: qt qt4 qwebview qwebkit qwebelement

我相信这是一个非常具有挑战性的问题。

我的目标网页为click here

你看到有一个带有文字的按钮" Jouw zoekertje GRATIS PLAATSEN"橙色背景。如果您在常规浏览器上点击此链接,则会转到" http://www2.kapaza.be/nl/ai"。那部分没问题。

现在我在Qt的QWebView上做同样的事情。我认为如果它是Qt或任何其他环境并不重要。我相信它会表现得一样。会发生的是,当我将此链接加载到我的QWebView时,它只是不加载任何东西。有东西继续加载,但没有任何可见的出现。我认为这是对网站的一种保护。在我的应用程序中,我需要以编程方式单击此链接。到目前为止,我已经多次为其他链接或按钮做了类似的事情,但是没有它们在这个目标链接上工作。谁能告诉我可能是什么问题?

首先我认为这是因为饼干。我在我的软件上启用了它们,但仍然是相同的。

1 个答案:

答案 0 :(得分:0)

根据我使用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有时会发生的事情之一。您只需要熟悉变通方法,学会识别这些事件并有效地处理它们。底线是 - 我无法找到页面上的任何特别错误 - 这是个好消息!你可以用它做任何你想做的事。尝试我提到的步骤,如果这样做不起作用,请提交代码的相关部分。

祝你好运