Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.51 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. # Form implementation generated from reading ui file '/home/imron/Documents/python/iris - web automation/simple/mainwindow.ui'
  5. #
  6. # Created by: PyQt5 UI code generator 5.14.1
  7. #
  8. # WARNING! All changes made in this file will be lost!
  9.  
  10.  
  11. import os
  12. from PyQt5 import QtCore, QtGui, QtWidgets
  13. from selenium import webdriver
  14. from selenium.webdriver.chrome.options import Options
  15. from selenium.webdriver.common.keys import Keys
  16.  
  17. ADDRESS = '127.0.0.1'
  18. PORT = '5558'
  19. DEBUG_ADDRESS = ADDRESS + ':' + PORT
  20. os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = PORT
  21.  
  22. class Ui_MainWindow(object):
  23.     def setupUi(self, MainWindow):
  24.         MainWindow.setObjectName("MainWindow")
  25.         MainWindow.resize(617, 395)
  26.         self.centralWidget = QtWidgets.QWidget(MainWindow)
  27.         self.centralWidget.setObjectName("centralWidget")
  28.         self.gridLayout = QtWidgets.QGridLayout(self.centralWidget)
  29.         self.gridLayout.setObjectName("gridLayout")
  30.         self.webEngineView = QtWebEngineWidgets.QWebEngineView(self.centralWidget)
  31.         self.webEngineView.setUrl(QtCore.QUrl("about:blank"))
  32.         self.webEngineView.setObjectName("webEngineView")
  33.         self.gridLayout.addWidget(self.webEngineView, 0, 0, 1, 1)
  34.         self.verticalLayout = QtWidgets.QVBoxLayout()
  35.         self.verticalLayout.setObjectName("verticalLayout")
  36.         spacerItem = QtWidgets.QSpacerItem(20, 340, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
  37.         self.verticalLayout.addItem(spacerItem)
  38.         self.pushButton = QtWidgets.QPushButton(self.centralWidget)
  39.         self.pushButton.setMaximumSize(QtCore.QSize(100, 16777215))
  40.         self.pushButton.setObjectName("pushButton")
  41.         self.verticalLayout.addWidget(self.pushButton)
  42.         self.gridLayout.addLayout(self.verticalLayout, 0, 1, 1, 1)
  43.         MainWindow.setCentralWidget(self.centralWidget)
  44.  
  45.         self.retranslateUi(MainWindow)
  46.         QtCore.QMetaObject.connectSlotsByName(MainWindow)
  47.        
  48.         # load HTML
  49.         HTML  = '<label>Please input some text</label><input type="text" name="q">'
  50.         self.webEngineView.setHtml(HTML)
  51.        
  52.         #signal n slot
  53.         self.pushButton.clicked.connect(self.pushButton_onClicked)
  54.        
  55.         # webdriver
  56.         self.bot = None
  57.  
  58.     def retranslateUi(self, MainWindow):
  59.         _translate = QtCore.QCoreApplication.translate
  60.         MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  61.         self.pushButton.setText(_translate("MainWindow", "Fill Edit"))
  62.        
  63.     def driverResult(self, bot):
  64.         if bot:
  65.             self.bot = bot
  66.  
  67.             # execute
  68.             self.executor = EXECUTOR(bot)
  69.             self.executor.start()
  70.            
  71.    
  72.     def pushButton_onClicked(self):
  73.         if not self.bot:
  74.             self.driver = WEBDRIVERBOT()
  75.             self.driver.bot.connect(self.driverResult)
  76.             self.driver.start()
  77.         else:
  78.             self.driverResult(self.bot)
  79.  
  80.  
  81. class WEBDRIVERBOT(QtCore.QThread):
  82.     bot = QtCore.pyqtSignal(object)
  83.     def __init__(self):
  84.         QtCore.QThread.__init__(self)
  85.        
  86.     def run(self):
  87.             #setup browser
  88.             options = Options()
  89.             options.add_experimental_option("debuggerAddress", DEBUG_ADDRESS)
  90.             desired_capabilities=options.to_capabilities()
  91.            
  92.             # connect browser
  93.             try:
  94.                 driver = webdriver.Chrome(options=options, desired_capabilities=desired_capabilities)
  95.                 self.bot.emit(driver)
  96.                 print(driver)
  97.  
  98.             except Exception as error:
  99.                 print(error)
  100.                 self.bot.emit(None)
  101.  
  102. class EXECUTOR(QtCore.QThread):
  103.     msg = QtCore.pyqtSignal(object)
  104.     def __init__(self, bot):
  105.         QtCore.QThread.__init__(self)
  106.         self.bot = bot
  107.        
  108.     def run(self):
  109.             try:
  110.                 self.elem = self.bot.find_element_by_name('q')
  111.                 self.elem.send_keys("w")
  112.             except Exception as error:
  113.                 print('Error:', error)
  114.                 self.msg.emit(None)                
  115.                
  116.        
  117. from PyQt5 import QtWebEngineWidgets
  118.  
  119.  
  120. if __name__ == "__main__":
  121.     import sys
  122.     app = QtWidgets.QApplication(sys.argv)
  123.     app.setApplicationDisplayName('Chrome')
  124.     app.setApplicationVersion('80.0.3497.128')
  125.     MainWindow = QtWidgets.QMainWindow()
  126.     ui = Ui_MainWindow()
  127.     ui.setupUi(MainWindow)
  128.     MainWindow.show()
  129.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement