2016-09-06 5 views
-1

Ich habe ein Overlay mit Begriffen, die sich oben auf dem Hauptfenster öffnen. Dies ist, was die Bildlaufleisten wie folgt aussehen:Selen - wie man den Fokus auf das Overlay setzt

Scrollbar

Das neue Fenster nicht als neues ‚Fenster‘ oder Tab erkannt wird, so kann ich nicht schalten normal, weder ist es ein iframe so driver.switchTo() .frame (iframe); wird auch nicht funktionieren. Dies ist, was ich bisher versucht:..

1) auf das Element (von Element meine ich das Overlay-Fragment, das den Inhalt enthält, funktioniert nichts

2) Schalt Fokus mit dem folgenden:

jse.executeScript("var ov = document.getElementsByClassName('overlay__content'); window.setTimeout(function() { ov[0].focus(); }, 0); "); 

3) der Versuch, dann klicken Sie verwenden Schalter auf aktives Element:

_driver.getWebDriver().switchTo().activeElement(); 

Keines dieser Ergebnisse der Arbeit. Ich versuche, in ein Fenster zu wechseln und benutze es dann, um einen Vollbild-Screenshot zu erhalten. Das funktioniert sehr gut mit iframes, aber ich bin verwirrt, wie hier vorzugehen ist. Jedes scrollBy (0,10) usw. führt zum Scrollen des Hauptfensters.

+0

Es ist schwer zu verstehen, Ihre Frage das Innere div mit dem Overlay sein .. würde mehr erarbeiten ??? –

+0

In welcher Weise? Ein Overlay öffnet das Hauptfenster, auf das ich fokussieren möchte, und scrollt dann, aber ich kann nicht. –

+0

Könnten Sie die volle Ansicht des Screenshots anstelle der Seitenansicht freigeben? –

Antwort

0

Um innerhalb des Overlay div zu blättern, können Sie eine Methode mit JavaScriptExecuter wie folgt machen;

public void scrollDownInsideOf(WebElement element, int pxForScrollDown) { 
    JavascriptExecutor js = (JavascriptExecutor) webDriver; 
    js.executeScript("arguments[0].scrollTop = arguments[1];", element, pxForScrollDown); 
} 

Element sollte

+0

Das Problem ist weniger das Scrollen innerhalb des Elements, sondern das Aktivieren von ashot (https://github.com/yandex-qatools/ashot), um dies zu tun, indem Sie 'focus' wie bei iframes auf das Element setzen. Aber ich werde es versuchen und sehen, wie es geht, danke. –

+0

Wenn es nur ein Div ist, wie Sie sagen, können Sie nicht switchTo() verwenden, wie Sie mit Windows zu Iframes tun können. Da es nichts zu wechseln gibt, ist es ein Inhalt der Seitenquelle. –

Verwandte Themen