2012-06-16 19 views
6

का उपयोग करके एक फॉर्म भरना मैं पीईक्यूटी/क्यूवेब्यूव्यू 1 का उपयोग करना चाहता हूं) एक विशिष्ट यूआरएल लोड करें, 2) एक फॉर्म में जानकारी दर्ज करें, 3) बटन/लिंक पर क्लिक करें। मैकेनाइजेशन काम नहीं करता है क्योंकि मुझे एक वास्तविक ब्राउज़र की आवश्यकता है।पीईक्यूटी और क्यूवेब्यूव

यहाँ मेरी कोड है:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.QtWebKit import * 
from PyQt4 import QtCore 

app = QApplication(sys.argv) 
web = QWebView() 
web.load(QUrl("https://www.lendingclub.com/account/gotoLogin.action")) 

def fillForm(): 
    doc = web.page().mainFrame().documentElement() 
    user = doc.findFirst("input[id=master_username]") 
    passwd = doc.findFirst("input[id=master_password]") 

    user.setAttribute("value", "[email protected]") 
    passwd.setAttribute("value", "password") 


    button = doc.findFirst("input[id=master_sign-in-submit]") 
    button.evaluateJavaScript("click()") 

QtCore.QObject.connect(web, QtCore.SIGNAL("loadFinished"), fillForm) 
web.show() 
sys.exit(app.exec_()) 

पृष्ठ लोड सही ढंग से है, लेकिन कोई इनपुट दर्ज किया गया है और फार्म जमा नहीं किया जाता। कोई विचार?

उत्तर

0

आप इसे वेबकिट/क्यूवेब व्यू के साथ करने में सक्षम हो सकते हैं लेकिन सेलेनियम का उपयोग करने के बारे में क्या: http://code.google.com/p/selenium/? यह बिल्कुल इस प्रकार के ब्राउज़र स्वचालन के लिए डिज़ाइन किया गया है और इसमें अच्छी पायथन बाइंडिंग है।

user.setAttribute("value", "[email protected]") 
--> 
user.evaluateJavaScript("this.value = '[email protected]'") 

गुण और संपत्ति अलग बातें हैं:

6

यह मैं यह काम करने के लिए मदद की।

एक और ठीक:

click() --> this.click() 
+0

setAttribute works – Like

0

PyQt5 के साथ ऐसा करने वाला कोई भी व्यक्ति के लिए, इस उदाहरण में मदद मिल सकती रूप में कई चीजें बदल गई हैं। स्पष्ट रूप से जावास्क्रिप्ट को वेबसाइट की सामग्री के आधार पर समायोजित करने की आवश्यकता है।

import os 
import sys 
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget 
from PyQt5.QtCore import QUrl, QEventLoop 
from PyQt5.QtWebEngineWidgets import QWebEngineView 

class WebPage(QWebEngineView): 
    def __init__(self): 
     QWebEngineView.__init__(self) 
     self.load(QUrl("https://www.url.com")) 
     self.loadFinished.connect(self._on_load_finished) 

    def _on_load_finished(self): 
     print("Finished Loading") 
     self.page().toHtml(self.Callable) 

    def Callable(self, html_str): 
     self.html = html_str 
     self.page().runJavaScript("document.getElementsByName('loginid')[0].value = '[email protected]'") 
     self.page().runJavaScript("document.getElementsByName('password')[0].value = 'test'") 
     self.page().runJavaScript ("document.getElementById('signin').click()") 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    web = WebPage() 
    web.show() 
    sys.exit(app.exec_()) # only need one app, one running event loop 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^