2017-12-22 29 views
2

I Selen und Java verwenden, nachdem er auf einer Schaltfläche klicken ich auf einer anderen Seite landen, und ich sehe den Eingabe-Tag, ich suche im AnsichtsfensterSelen - nach Seitenwechsel nicht Element finden kann sie sogar sichtbar

nach warten auf die Seite mit

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

zu laden, um den Tag ich die scrollIntoView() und die Suche nach dem Element von ID mit Hilfe von Javascript innerhalb Java auf diese Weise benutzen Sie:

js.executeScript("document.getElementById('elementId').scrollIntoView(true);"); 

aber das Problem ist, dass document.getElementById ('elementId') null zurückgibt; Ich habe es auch in der Firefox-Webdriver-Konsole mit dem gleichen Ergebnis versucht.

Wenn ich document.getElementById('elementId') auf der gleichen Seite mit Firefox-Konsole ausführen, aber ohne Selenium Webdriver zu verwenden, bekomme ich das Tag wie erwartet.

Warum bekomme ich diese Null mit Selen? Wie man es repariert?

+0

prüfen diese. https://StackOverflow.com/questions/11736027/Webdriver-Wait-for-Element-using-Java – Lumaskcete

+1

Haben Sie überprüft, ist es nicht in irgendeinem Frame/Iframe? –

+1

ja, es ist in einem iframe-Tag enthalten – eeadev

Antwort

1

Bitte benutzen Sie den folgenden Code vor dem ScrollIntoView() Code

driver.switchTo().frame(driver.findElement(By.tagName("iframe"))); 

IF jedes Element unter iframe-Tag befindet Sie Ihre Treiber wechseln sollte mit oben

iframe Wenn Sie Ihren Treiber wechseln müssen Standard-Modus, dann müssen u Code unten

driver.switchTo().defaultContent() 

verwenden Wenn das Element unter modal ist es dann verwenden

driver.switchTo().frame("ModelFrameTitle"); 

oder

driver.switchTo().activeElement() 
+0

Großartig von Ihnen zu hören, dass es funktioniert. –

+0

Was ist, wenn das Objekt ein Modal anstelle eines Iframes ist? – eeadev

+1

@eeadev siehe meine aktualisierte Antwort –

Verwandte Themen