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_())