Авторизация в instagram pyqt5 и selenium
Есть окно входа и скрипт авторизации инстаграм на селениум , вот реализация:
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
import random
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.firefox.options import Options
import os
import re
import sys
from PyQt5 import QtCore,QtGui,QtWidgets
from des import *
class InstagramBot():
def __init__(self,username,password):
self.username = username
self.password = password
options = Options()
# options.add_argument("--headless")
self.browser = webdriver.Firefox(options=options)
def close_browser(self):
self.browser.close()
self.browser.quit()
def login(self):
browser = self.browser
browser.get('https://www.instagram.com/')
time.sleep(random.randrange(4 ,6))
username_input = browser.find_element_by_name("username")
username_input.clear()
username_input.send_keys(username)
time.sleep(5)
password_input = browser.find_element_by_name("password")
password_input.clear()
password_input.send_keys(password)
password_input =browser.find_element_by_xpath("/html/body
/div[1]/section
/main/article/div[2]/div[1]/div/form/div
/div[3]/button/div").click()
time.sleep(10)
class GUI(QtWidgets.QMainWindow):
def __init__(self):
QtWidgets.QTabWidget.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.username = self.ui.lineEdit.text()
self.password = self.ui.lineEdit_2.text()
self.ui.pushButton.clicked.connect(self.go_to)
def go_to(self):
self.ui.lineEdit.clear()
self.ui.lineEdit_2.clear()
username = self.username
password = self.password
self.inst = InstagramBot(username,password)
self.inst.login()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
mywin = GUI()
mywin.show()
sys.exit(app.exec_())
Но я никак не могу вытащить переменные из функции go_to и вставить их в класс с ботом для авторизации
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
я не могу проверить ваш пример, но предложу проверить следующее:
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
import random
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.firefox.options import Options
import os
import re
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from des import * # ???
class InstagramBot():
def __init__(self, username, password):
self.username = username
self.password = password
print(self.username, self.password) # проверьте, что там
options = Options()
# options.add_argument("--headless")
self.browser = webdriver.Firefox(options=options)
def close_browser(self):
self.browser.close()
self.browser.quit()
def login(self):
browser = self.browser
browser.get('https://www.instagram.com/')
time.sleep(random.randrange(4 ,6))
username_input = browser.find_element_by_name("username")
username_input.clear()
# ????????
# username_input.send_keys(username)
username_input.send_keys(self.username) # +
time.sleep(5)
password_input = browser.find_element_by_name("password")
password_input.clear()
# ????????
# password_input.send_keys(password)
password_input.send_keys(self.password) # +
password_input = browser.find_element_by_xpath("/html/body
/div[1]/section
/main/article/div[2]/div[1]/div/form/div
/div[3]/button/div").click()
time.sleep(10)
class GUI(QtWidgets.QMainWindow):
def __init__(self):
# vvvvvvvvvv # <--- ???
# QtWidgets.QTabWidget.__init__(self)
super().__init__() # +
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# self.username = self.ui.lineEdit.text()
# self.password = self.ui.lineEdit_2.text()
self.ui.pushButton.clicked.connect(self.go_to)
def go_to(self):
# self.ui.lineEdit.clear()
# self.ui.lineEdit_2.clear()
# username = self.username
# password = self.password
username = self.ui.lineEdit.text() # +
password = self.ui.lineEdit_2.text() # +
self.ui.lineEdit.clear() # +
self.ui.lineEdit_2.clear() # +
self.inst = InstagramBot(username, password)
self.inst.login()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
mywin = GUI()
mywin.show()
sys.exit(app.exec_())