Login & Send Whatsapp Message

  • Step
    
                        from PyQt5.QtGui     import *
    from PyQt5.QtCore    import *
    from PyQt5.QtWidgets import *
    
    from PyQt5.QtGui import QPixmap  
    
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    import time
    import os
    import sys
    
     
    class Window(QDialog):
        def __init__(self):
            super().__init__()
            self.title = "Login"
            self.top = 100
            self.left = 100
            self.width = 680
            self.height = 500
            self.InitUI()
    
        def InitUI(self):
           
            self.setWindowTitle(self.title)
            self.setFixedWidth(250)  
            self.label1 = QLabel('Username')
            self.lineEdit1 = QLineEdit("", self)
    
            self.label2 = QLabel('Password')
            self.lineEdit2 = QLineEdit("", self)
            
            layoutV = QVBoxLayout()
            self.pushButton = QPushButton(self)
            self.pushButton.setStyleSheet('background-color: rgb(0,0,255); color: #fff')
            self.pushButton.setText('LOGIN')  
            self.pushButton.clicked.connect(self.doLogin)     
           
            
            layoutH1 = QHBoxLayout()
            layoutH1.addWidget(self.label1)
            layoutH1.addWidget(self.lineEdit1)
    
            layoutH2 = QHBoxLayout()
            layoutH2.addWidget(self.label2)
            layoutH2.addWidget(self.lineEdit2)
    
            
            layoutV.addLayout(layoutH1)
            layoutV.addLayout(layoutH2)
            layoutV.addWidget(self.pushButton)
            self.setLayout(layoutV)
            self.show()
    
        def doLogin(self):
            self.cams = Window1('') 
            self.cams.show()
            self.close()
    
    
        @pyqtSlot()
        def buttonWindow1_onClick(self):
            self.statusBar().showMessage("Switched to window 1")
            self.cams = Window1(self.lineEdit1.text()) 
            self.cams.show()
            self.close()
    
        @pyqtSlot()
        def buttonWindow2_onClick(self):
            self.statusBar().showMessage("Switched to window 2")
            self.cams = Window2(self.lineEdit2.text()) 
            self.cams.show()
            self.close()
            
            
    class Window1(QDialog):
        def __init__(self, value, parent=None):
            super().__init__(parent)
            self.setWindowTitle('Message Window')
            self.setFixedWidth(500)
            self.setFixedHeight(600)
            self.setWindowIcon(self.style().standardIcon(QStyle.SP_FileDialogInfoView))
    
                                                                                                                  
             
    
            btn1 = QPushButton("Open Image")
            btn1.clicked.connect(self.getImage)
    
            w = QWidget()
            w.resize(640, 480)
            self.textBox = QPlainTextEdit(w)
    
            
            layoutV = QVBoxLayout()
            self.pushButton = QPushButton(self)
            self.pushButton.setStyleSheet('background-color: rgb(0,0,255); color: #fff')
            self.pushButton.setText('Send Now')
            self.pushButton.clicked.connect(self.doSend)
            
            layoutV.addWidget(btn1)
            layoutV.addWidget(self.textBox) 
            layoutV.addWidget(self.pushButton) 
    
            
            self.setLayout(layoutV)
           
            
        def getImage(self):
                fname = QFileDialog.getOpenFileName(self, 'Open file', "c://", "Image files (*.png *.jpg *.gif *.mp3 *.mp4)")
                self.imagePath = fname[0]
                #print(imagePath)
               
    
    
        def doSend(self):
            #print(self.textBox.toPlainText())
            driver = webdriver.Chrome()
    
            driver.get("https://web.whatsapp.com/")
            wait = WebDriverWait(driver, 1000)
    
            with open('recipients.txt', 'r') as f:
                groups = [group.strip() for group in f.readlines()]
    
            for group in groups:	 
                #target = '"Dhanya Abhilash"'
                
                target = '"'+group+'"'
                print(target)
    
                x_arg = '//span[contains(@title,' + target + ')]'
                group_title = wait.until(EC.presence_of_element_located((
                    By.XPATH, x_arg)))
                group_title.click()
    
    
                inp_xpath = '//div[@contenteditable="true"][@data-tab="10"]'
                input_box = wait.until(EC.presence_of_element_located((
                    By.XPATH, inp_xpath)))
    
                attachment_xpath='//div[@title="Attach"]'
                attachment_box = wait.until(EC.presence_of_element_located((
                    By.XPATH, attachment_xpath)))
                attachment_box.click()
    
                image_xpath='//input[@accept="image/*,video/mp4,video/3gpp,video/quicktime"]'
                image_box = wait.until(EC.presence_of_element_located((
                    By.XPATH, image_xpath)))
                image_box.send_keys(self.imagePath)
    
                send_xpath='//span[@data-icon="send"]'
                send_button= wait.until(EC.presence_of_element_located((
                    By.XPATH, send_xpath)))
    
                send_button.click()       
    
                
                input_box.send_keys(self.textBox.toPlainText() + Keys.ENTER)
                time.sleep(1)
    
    
        def play(self):
            fileName='E:/python/pyqt/video.mp4'        
            if fileName != '':
                self.mediaPlayer.setMedia(
                        QMediaContent(QUrl.fromLocalFile(fileName)))
               
            if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
                self.mediaPlayer.pause()
            else:
                self.mediaPlayer.play()        
            
        
    class Window2(QDialog):
        def __init__(self, value, parent=None):
            super().__init__(parent)
            self.setWindowTitle('Window2')
            self.setWindowIcon(self.style().standardIcon(QStyle.SP_FileDialogInfoView))
    
            label1 = QLabel(value)
            self.button = QPushButton()
            self.button.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
            self.button.setIcon(self.style().standardIcon(QStyle.SP_ArrowLeft))
            self.button.setIconSize(QSize(200, 200))
            
            layoutV = QVBoxLayout()
            self.pushButton = QPushButton(self)
            self.pushButton.setStyleSheet('background-color: rgb(0,0,255); color: #fff')
            self.pushButton.setText('Click me!')
            self.pushButton.clicked.connect(self.goMainWindow)
            layoutV.addWidget(self.pushButton)
            
            layoutH = QHBoxLayout()
            layoutH.addWidget(label1)
            layoutH.addWidget(self.button)
            layoutV.addLayout(layoutH)
            self.setLayout(layoutV)
    
        def goMainWindow(self):
            self.cams = Window()
            self.cams.show()
            self.close()    
            
    
    if __name__ == '__main__':
        app=QApplication(sys.argv)
        ex=Window()
        sys.exit(app.exec_())