首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWebElement evaluateJavaScript this.click()方法不工作

QWebElement evaluateJavaScript this.click()方法不工作
EN

Stack Overflow用户
提问于 2014-09-08 05:11:16
回答 1查看 1.1K关注 0票数 0

我在QWebView中加载了HTML。这个HTML有以下两个元素:

代码语言:javascript
复制
    <button class="submit1" tabindex="1" type="submit" id="submit1">accept</button>
    <button class="submit2" tabindex="2" type="submit" id="submit2">decline</button>

在代码中,我有如下内容:

代码语言:javascript
复制
    QWebView webView;
    ...
    QWebElement button = webView->page()->mainFrame()->documentElement().findFirst("button[id=\"submit1\"]");
    button.evaluateJavaScript("this.click();");

最后一行代码对我不起作用。此外,如果我有一个元素而不是按钮- JavaScript ()方法可以很好地工作。

EN

回答 1

Stack Overflow用户

发布于 2014-09-09 08:31:08

我无法回答这个问题,比如说,从您给我们的信息中很难看出确切的问题是什么,但我能做的是给您一些关于在QWebView中调试问题的指导。

1)我要检查的第一件事是,你手上是否真的有按钮元素。试着这样做:

代码语言:javascript
复制
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)尝试以不同的方式锁定元素:

按课程分类:

代码语言:javascript
复制
QWebElement button = webView->page()->mainFrame()->documentElement().findFirst("button[class=submit1]");

试着锁定父母,然后得到第一个孩子:

代码语言:javascript
复制
QWebElement parent = **get the parent element**
button = parent.findAll("button")[0]

通常,我尽量避免使用这种方法,因为在一些情况下,它很容易崩溃。如果这是唯一对你有用的东西,我强烈推荐一些“尝试\除”以避免任何问题。

注意:您说过,如果您得到一个元素而不是一个按钮,单击()就可以了。原因是click()对不可点击的元素没有任何作用,也没有将某种行为附加到click()事件。因此,它基本上是无所事事的:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25717789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档