2017-12-08 4 views
0

Ich habe Probleme mit der Handhabung Authentifizierung Pop-up in Chrome über Selenium.Chrome Alarm Pop-up nicht in Selen gefunden

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Chrome() 
driver.get('URL') 
time.sleep(5) 
alert = driver.switch_to_alert() 
alert.send_keys('Username') 
alert.send_keys(Keys.TAB) 
alert.send_keys('Password') 

Dies gibt einen error--

"selenium.common.exceptions.NoAlertPresentException: Nachricht: kein Alarm offen"

Alternativ habe ich versucht, auch den folgenden Code:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Chrome() 
driver.get('https://Username:[email protected]') 

Der zweite Code funktioniert teilweise-

In Chrome ist der Benutzer angemeldet, aber die Seite wird nicht geladen. Nur eine leere Seite wird angezeigt. Sobald die leere Seite geladen ist, habe ich nur die URL (ohne Benutzeranmeldeinformationen) übergeben und es funktioniert gut.

In Firefox lädt die Webseite perfekt.

Grundsätzlich ist das Problem mit Chrome.

Jede Hilfe wird geschätzt.

Danke!

+0

Versuchen Sie, den Benutzernamen und das Passwort zusammen mit der URL zu senden. –

+0

Ich habe das versucht. In dem alternativen Code, den ich in meiner Frage gepostet habe, sende ich den Benutzernamen und das Passwort zusammen mit der URL. Aber das lädt die Webseite nicht richtig. – Sameem

+1

Mögliches Duplikat von [Python Selenium Alert - Eingabeaufforderung Benutzername und Passwort funktioniert nicht] (https://stackoverflow.com/questions/45328654/python-selenium-alert-prompt-username-and-password-is-not-working) – DebanjanB

Antwort

0

Der zweite Code, den Sie ausprobiert haben, ist mit einem kleinen Fehler korrekt.

+0

Hallo, Danke für Ihre Eingabe. Der Code, den Sie vorgeschlagen haben, sieht nicht sehr verschieden von mir aus. Abgesehen davon, dass Sie Variablen verwenden, übertrage ich sie direkt. Bitte geben Sie an, was genau in meinem Code falsch ist. Haben Sie in Ihrem Code nach '@' auch ein Leerzeichen eingegeben? Als ich das probiert habe, hat der Platz% 20 nach https: // eingefügt, was die URL schließlich falsch macht. Mein Problem mit dem zweiten Code war, dass die Webseite nicht richtig geladen wurde. Ein leerer Bildschirm wurde angezeigt. Als vorübergehende Lösung habe ich die URL nach einer Wartezeit von 5 Sekunden erneut übergeben und es hat gut funktioniert. – Sameem

0

Zuerst versuchen, auf Alarm zu warten.

Wenn ein Alarm vorliegt, dann nur zum nächsten Schritt wechseln. Und auch können Sie bitte überprüfen Sie den Screenshot, wenn Warnung tatsächlich vorhanden ist, wenn Testfall fehlschlägt.

+0

Das time.sleep() bietet genügend Verzögerung, bis das Pop-up auftritt. Ja, die Warnung ist vorhanden, wenn das Skript fehlschlägt. – Sameem

+0

Wenn NoAlertPresentException angegeben wird, bedeutet dies, dass keine Warnung vorhanden ist. –

+0

Sie können einfach diesen Ansatz überprüfen, die Elemente überprüfen und ihren xpath oder ihre IDs finden und mit folgendem Code versuchen element = driver.find_element_by_id ('userName') element.send_keys ('Benutzername') folgen dem gleichen Ansatz für Passwort und Senden. Hoffe, das wird für dich funktionieren. –