我认为这是一个相当具有挑战性的问题。
我的目标网页是点击这里
您可以看到有一个按钮,其文本"Jouw zoekertje GRATIS PLAATSEN"的橙色背景。如果你在普通浏览器上点击这个链接,它会转到"http://www2.kapaza.be/nl/ai"。那部分很好。
现在我做同样的事情在QWebView在Qt.我认为这并不重要,如果它是Qt或任何其他环境。我相信它的行为会是一样的。发生的是,当我加载这个链接到QWebView时,它什么都不加载。有些东西一直在加载,但什么也看不见。我认为这是对网站的一种保护。在我的应用程序中,我需要以编程方式单击此链接。到目前为止,我已经为其他链接或按钮做了很多次类似的事情,但它们都不能在这个目标链接上工作。谁能告诉我是什么问题?
一开始我以为是因为饼干。
根据我使用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)
几秒钟后尝试调用"reload"。它为我工作了几次:
... wait(10) webView.reload()
总而言之——这只是QWebView有时会发生的事情之一。您只需要熟悉变通方法,学会识别这些事件并有效地处理它们。底线是-我找不到任何特别的错误的页面-这是好消息!你可以用它做任何你想做的事。尝试我提到的步骤,如果不起作用,请提交代码的相关部分。
好运