Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QWebElement evaluateJavaScript this.click()方法don';行不通_Javascript_Qt_Qt5_Qwebview_Qwebelement - Fatal编程技术网

QWebElement evaluateJavaScript this.click()方法don';行不通

QWebElement evaluateJavaScript this.click()方法don';行不通,javascript,qt,qt5,qwebview,qwebelement,Javascript,Qt,Qt5,Qwebview,Qwebelement,我已经加载了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中的HTML表单。此HTML包含以下两个元素:

    <button class="submit1" tabindex="1" type="submit" id="submit1">accept</button>
    <button class="submit2" tabindex="2" type="submit" id="submit2">decline</button>
最后一行代码不适合我。
此外,如果我有一个元素而不是按钮,JavaScript click()方法可以很好地工作。

我无法回答每个问题,因为从您提供的信息很难判断确切的问题是什么,但我能做的是为您提供一些关于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) 转到您正在处理的网页。那个按钮真的能用吗?某些脚本可能会向其注入“disabled”属性,从而使其不可单击

3) 尝试以不同的方式锁定元素:

按类别获取:

QWebElement button = webView->page()->mainFrame()->documentElement().findFirst("button[class=submit1]");
尝试锁定父对象,然后获取第一个子对象:

QWebElement parent = **get the parent element**
button = parent.findAll("button")[0]
通常我会尽量避免使用这种方法,因为在某些情况下它很容易崩溃。如果这是唯一对您有效的方法,我强烈建议您使用一些“尝试\例外”,以避免出现任何问题

小提示:您说过,如果您得到的是一个元素而不是一个按钮,那么click()可以正常工作。原因是click()对对象不起任何作用 元素,该元素不可单击或具有某种附加的行为 单击()事件。因此,基本上什么也不做就行了:)

QWebElement parent = **get the parent element**
button = parent.findAll("button")[0]