2014-02-24 7 views
6

Mein aktueller Komponententest (Winkelmesser + angularJS-Projekt) schlägt mit dem Fehler UnknownError: unknown error: Element is not clickable at point (525, 1103) fehl. Ich habe Debugger verwendet, um es kurz vor dem Fehler zu stoppen, und der einzige Grund, warum ich denken kann, dass es scheitern würde, ist, weil die Schaltfläche nicht im View-Port ist (Sie müssten runterscrollen).Ist protractor.findElement() gemeint, um zu diesem Element zu scrollen?

Die Fehler Linien

homeLink = ptor.findElement(protractor.By.linkText('Home')); 
homeLink.click(); 
expect(ptor.getCurrentUrl()).toBe(homeUrl); 

Von https://github.com/angular/protractor/issues/319 sind, sagt er ‚... wenn ich findElement() verwenden, es ihnen zu‚oben‘scrollt der Seite‘. Und die Kommentare stimmen überein.

In meinem Test homeLink = ptor.findElement(protractor.By.linkText('Home')); verursacht nicht die Seite zu scrollen.

Bin ich falsch daran zu denken, dass es sollte?

Was soll ich tun?

Antwort

9

Sie müssen nach unten scrollen (oder Browser zu maximieren, wenn diese Sie auf die Schaltfläche, um zu sehen ermöglicht es Ihnen, klicken Sie möchten) zunächst so, dass die Taste auf der Seite sichtbar ist:

var scrollIntoView = function() { 
    arguments[0].scrollIntoView(); 
} 
browser.executeScript(scrollIntoView, yourwebelement); 
+0

Also heißt das, dass findElement() nicht automatisch auf das Element scrollt? Wenn nicht, worüber reden sie in github link? – Lango

+0

Nur unterstützt in IE und Firefox https://code.google.com/p/selenium/wiki/DesiredCapabilities#Read-write_capabilities – venkat

+0

@venkat Dieses Code-Snippet läuft Javascript innerhalb des Browsers, so sollte es in jedem Browser unterstützt werden, der unterstützt [Element.scrollIntoView] (https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView), das alle gängigen Browser (inkl. IE6 +) enthält. – decates

2

vergessen Sie nicht, um das webElement zu erhalten browser.driver.executeScript ("arguments [0] .scrollIntoView (true);", ed.getWebElement());

Verwandte Themen