Merhaba değerli üstatlar. 1-2 gündür beni oldukça yoran Dialog formunun donma sorunuyla uğraşıyorum. İşin içinden bir türlü çıkamadım. Selenium ile instagram da iki adımlı doğrulama kısmına geldiğimde oluşturduğum dialog formunun çıkmasını istiyorum fakat bu dialog form donuyor. Bu sorunun nedeni tam olarak nedir? Bunu nasıl aşabilirim ?
Öncelikle buraya resim olarak donmuş olan Dialog formunu ve hemen altına aslında görünmesi gereken formu ekliyorum ;
AuthenticationForm.py
import sys
from Form_ui.SubForms.instagram.Authentication._AuthenticationForm import Ui_Dialog
#from _AuthenticationForm import Ui_Dialog
from PyQt5.QtWidgets import QDialog
from PyQt5 import QtWidgets
class AuthForm(QDialog):
def __init__(self):
super(AuthForm, self).__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.setWindowTitle("Doğrulama Kodu")
# self.ui.btnOnayla.clicked.connect(self.check_form)
self.form_hide()
#def check_form(self):
# if self._tboxKod == '123456':
# self.close()
# return True
# else:
# return self.form_unhide()
# Form varsayılan ayarları
def form_hide(self):
self.setMinimumSize(402, 135)
self.setMaximumSize(402, 135)
self.ui.frameWrong.setHidden(True)
def form_unhide(self):
self.setMinimumSize(402, 209)
self.setMaximumSize(402, 209)
self.ui.frameWrong.setHidden(False)
@property
def _tboxKod(self):
return self.ui.tboxKod.text()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
win = AuthForm()
win.show()
sys.exit(app.exec_())
Formu çağırdığım kısım ;
#TODO : baglan() tamamen değişecek, test amaçlı yazıldı.
def baglan(self):
from instagramForm import FirstJoin
if FirstJoin.check_userInformation:
try:
# İlk Giriş (Kullanıcı adı ve Şifre istenen sayfa)
element_present = EC.presence_of_element_located((By.ID, 'loginForm'))
WebDriverWait(self.driver, self.timeout).until(element_present)
except NoSuchElementException:
print("İnternet bağlantısını kontrol edin.")
finally:
time.sleep(5)
input_username = self.driver.find_element(By.XPATH, '//*[@id="loginForm"]/div/div[1]/div/label/input')
# Kullanıcı adı ve şifre yazılıysa temizle.
input_username.clear()
input_password = self.driver.find_element(By.XPATH, '//*[@id="loginForm"]/div/div[2]/div/label/input')
input_password.clear()
time.sleep(1)
input_username.send_keys(self.username)
input_password.send_keys(self.password)
input_password.send_keys(Keys.RETURN)
time.sleep(3)
# Eğer yasaklandıysa ;
try:
self.driver.find_element(By.XPATH, '/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[2]/p')
print("Giriş yapılamıyor. : 'We couldn't connect to Instagram. Make sure you're connected to the internet and try again.'")
except NoSuchElementException:
print("Burada (NoSuchElementException)")
print(self.driver.current_url)
if self.driver.current_url == 'https://www.instagram.com/accounts/login/two_factor?next=%2F':
self.verificationForm.show()
time.sleep(10) # Test.
# time.sleep yokkende açıldığı gibi kapanıyor (form yine donuk geliyor)
else:
print("Bir hata oluştu")
Not : Tamamını okumak istemezseniz ve tam olarak dialog formunu nerede çağırdığımı görmek isterseniz, en son else bloğunun üstüne bakın.
Bu paylaştığım bilgi yeterli mi emin değilim, eğer daha detaylı bir paylaşım gerekiyorsa paylaşabilirim