在QT官網(wǎng)上有個(gè)webkit模擬網(wǎng)頁點(diǎn)擊事件的例子:
-
QWebElement document = frame->documentElement();
-
/* Assume that the document has the following structure:
-
-
<form name="myform" action="submit_form.asp" method="get">
-
<input type="text" name="myfield">
-
<input type="submit" value="Submit">
-
</form>
-
-
*/
-
-
QWebElement button = document.findFirst("input[type=submit]");
-
button.evaluateJavaScript("this.click()");
這個(gè)例子就是在:
-
<form name="myform" action="submit_form.asp" method="get">
-
<input type="text" name="myfield">
-
<input type="submit" value="Submit">
-
</form>
這個(gè)網(wǎng)頁里頭,找出一個(gè)type=submit的input元素,然后調(diào)用js里的 this.click()來模擬鼠標(biāo)點(diǎn)擊
但是這是方法是有局限的,click()事件只能對(duì)<input>元素進(jìn)行操作,但是對(duì)于<a>、元素等就不行了。
下面介紹一個(gè)實(shí)現(xiàn)對(duì)<a> 等元素的模擬點(diǎn)擊:
-
<a id='kwl' href='http://www.baidu.com'>baidu.com</a>
如果要對(duì)上面的元素進(jìn)行點(diǎn)擊的話,可以這么做:
-
aa=self.mainFrame().findAllElements("a[id=kwl]")
-
a=aa.at(0)
-
a.evaluateJavaScript("this.focus()")
代碼是用python寫的,調(diào)用qt模塊,用的是qt的庫。語法與c++有點(diǎn)不同,但是方法是一樣的。
上面代碼是先讓焦點(diǎn)放在想要的 <a>元素上。然后模擬 ENTER 按鍵:
python下調(diào)用的是virtkey模塊:
-
v = virtkey.virtkey()
-
v.press_keysym(65421)
-
v.release_keysym(65421)
然后ok,模擬完成。
|