2017-03-03 3 views
1

Ich arbeite gerade an dem Testen einer Website und eines der Probleme, mit denen ich arbeite, arbeitet mit einem nicht Javascript Popup.Wie man Nicht-JS-Popups in Selnium verwaltet?

Ich habe versucht, die Selenium Alert-Schnittstelle zu verwenden.

Probe von dem, was ich

Alert a = WebDriver.switchTo().alert() 
alert.accept() 
alert.dismiss() 

Dies scheint für Javascript zu arbeiten Benachrichtigung Pop-up, aber nicht für nicht JavaScript-Benachrichtigungen Pop-up gemacht haben. Gibt es eine Möglichkeit mit Pop-ups mit Selen umzugehen, die nicht auf Javascript basieren?

+1

Es würde helfen, die URL für die fragliche Seite, wenn möglich, anzugeben. –

+0

Tut mir leid, es ist Teil einer Admin-Sache, daher kann ich keine URL angeben. Ich frage mich nur, ob Selenium eine Möglichkeit hat, mit Pop-ups umzugehen, die nicht auf Javascript basieren? – Jay

+0

Es hängt davon ab, welche Art von Popup es ist. Ist es HTML-basiert? Wir müssten einen Screenshot sehen und brauchen mehr Informationen. – JeffC

Antwort

0

Das letzte Mal, als ich auf ein Pop-up wie dieses stieß, war es ein Frame, der sonst "unsichtbar" war. Öffnen Sie die Seite mit Ihrem bevorzugten Browser, markieren Sie etwas im Pop-up, klicken Sie mit der rechten Maustaste darauf und wählen Sie Element prüfen, und folgen Sie dessen XPath. Sie müssen möglicherweise einige Frames in Selen wechseln, um dorthin zu gelangen, wo Sie sein müssen.

+0

Danke ich werde es versuchen! – Jay

0

Wenn es HTML-Popup dann keine spezifische Sache getan werden muss, suchen Sie einfach erforderliche Element normalerweise genau wie Sie für normale Webseite tun.

Aber wenn ihr sagen Element dann nicht dort gefunden können 2 Fälle sein:

  1. Pop-up in einem Iframe vorhanden ist
  2. vor diesem Pop-up Sie in iframe waren aber, dass Pop-up ist in defaultContent Ansicht.

Je nach Fall, verwenden Sie diese Lösungen:

Für # 1: driver.switchTo().frame(0); // Hier 0 bedeutet, erste iframe- Sie iframe id auch

für 2 # verwenden: driver.switchTo().defaultContent();