- 論壇徽章:
- 0
|
我現(xiàn)使用QT的控件Qwebview控件來操作網(wǎng)頁(比如:http—)
當我如圖輸入名字及手機號時(手機號隨便輸入),點擊“發(fā)送驗證碼”時網(wǎng)頁會彈出輸入驗證碼窗口,
我使用QT生成在窗口,窗口上放置了一個Qwebview,并 self.webView.loadFinished.connect(self.finishLoading),如下:
class DlgWebTest(QDialog):
def __init__(self, *args, **argvs ):
super(DlgWebTest, self).__init__(*args, **argvs)
self.webView = QWebView(self)
self.webView.loadFinished.connect(self.finishLoading)
self.showMaximized()
self.webView.showMaximized()
self.first_load = True
def setUrl(self, url):
self.webView.setUrl(url)
def finishLoading(self):
# Begin document inspection.
print('finisthloading')
frame = self.webView.page().mainFrame()
document = frame.documentElement()
time.sleep(3)
self.click_send(document)
print('操作完成')
def click_send(self,document):
z = document.findFirst('input[class="name"]')
z.setAttribute('value',u'我不知道')
z = document.findFirst('input[class="tels fl phone"]')
z.setAttribute('value',u'1519879021')
btn = document.findFirst('input[class="get_yz"]')
btn.evaluateJavaScript("this.click()")
#以下顯示驗證碼。
#得到驗證碼
self.get_check()
#以下輸入驗證碼。并點確認。
現(xiàn)的問題我使用以上代碼,能正常出現(xiàn)顯示驗證碼的頁面,我也但得到驗證碼時,得到的圖片總是不對,
但我只執(zhí)行到這里,然后等待這里運行完成后,我用另外一個按扭事件調(diào)用self.get_check()來得到的驗證圖片就是正常的,
后來研究發(fā)現(xiàn),主要是在我調(diào)用得到驗證碼圖片的函數(shù)時finishLoading還沒執(zhí)行完成,這時得到有圖片還不對,要等待finishLoading執(zhí)行完成后,得到的圖片才對。
針對上面的問題,我想了兩方法:
1.可不可以在上面的代碼中調(diào)用( self.click_send(document) )時直接使用異步調(diào)用(試了一下,qt中能用 thread 出錯),比如postevent,可在網(wǎng)上找了很多也沒找到postevent的使用方法,這就能使用finishLoading先執(zhí)行完成,而在click_send執(zhí)行時取到驗證碼的圖片。所以求異步調(diào)用事件方法;
2.連接一個槽,使用 finishLoading 完成后再操作 click_send ?晌乙膊恢@個應(yīng)該乍么寫。
求上面的兩法的解決辦法,或者其它方法,謝謝
|
|