我的QWebView
<div class='a' id='root'>
<div id='x'>...</div>
<p> ...
<p>
...
<div id='x2'>...</div>
<div>
<a href='go/xxxx'>go</a>
</div>
</div>
如何选择a
?我试过这个选择:
div[id='root'].a
div[id='root'] + a
但它没有奏效。代码:
QWebFrame* frame = webView->page()->mainFrame();
QWebElement button = frame->documentElement().findFirst("div[id='root'].a");
assert(!button.isNull()); // gets executed
答案 0 :(得分:3)
您的选择器正在选择id =&#39; root&#39;和班级=&#39; a&#39;。如果要在该div中选择一个标记,则需要创建选择器:
div[id='root'].a a
额外的&#39; a&#39;在选择器的末尾告诉jquery选择div的内部。
答案 1 :(得分:1)
您可以switch to using XPath 2.0 in Qt拥有更多表达自由,但是您需要将HTML作为XML进行处理。
要解决此问题,请为a
添加descendant selector 1 。即,将此div[id='root'].a
更改为:
div[id=root].a a
作为替代方案,如果Qt中存在错误,请尝试:
div[id=root][class=a] a
或(可能有点宽):
div[id~=root][class~=a] a
最后两个只是替代方案,以防由于某种原因对您的代码进行原始修复(添加a
后代选择器)不起作用。
上面的代码段不使用带引号的字符串,这是可选的。
1 在我的原始(错误)解决方案之后,在stevenc4's answer中看到了添加a
。感谢他:)