我在QWebView中加载了HTML。这个HTML有以下两个元素:
<button class="submit1" tabindex="1" type="submit" id="submit1">accept</button>
<button class="submit2" tabindex="2" type="submit" id="submit2">decline</button>在代码中,我有如下内容:
QWebView webView;
...
QWebElement button = webView->page()->mainFrame()->documentElement().findFirst("button[id=\"submit1\"]");
button.evaluateJavaScript("this.click();");最后一行代码对我不起作用。此外,如果我有一个元素而不是按钮- JavaScript ()方法可以很好地工作。
发布于 2014-09-09 08:31:08
我无法回答这个问题,比如说,从您给我们的信息中很难看出确切的问题是什么,但我能做的是给您一些关于在QWebView中调试问题的指导。
1)我要检查的第一件事是,你手上是否真的有按钮元素。试着这样做:
QWebView webView;
...
QWebElement button = webView->page()....findFirst("button[id=\"submit1\"]");
if button is not None:
button.evaluateJavaScript("this.click();");
else:
print "Oh dear!"通过这个,我们想知道findFirst()是否真的获得了元素(我相信它确实得到了,语法似乎很好)。
2)转到你正在做的网页。那个按钮真的能用吗?某些脚本可能会向其注入一个“禁用”属性,从而使其不可点击。
3)尝试以不同的方式锁定元素:
按课程分类:
QWebElement button = webView->page()->mainFrame()->documentElement().findFirst("button[class=submit1]");试着锁定父母,然后得到第一个孩子:
QWebElement parent = **get the parent element**
button = parent.findAll("button")[0]通常,我尽量避免使用这种方法,因为在一些情况下,它很容易崩溃。如果这是唯一对你有用的东西,我强烈推荐一些“尝试\除”以避免任何问题。
注意:您说过,如果您得到一个元素而不是一个按钮,单击()就可以了。原因是click()对不可点击的元素没有任何作用,也没有将某种行为附加到click()事件。因此,它基本上是无所事事的:)
https://stackoverflow.com/questions/25717789
复制相似问题