Ich habe eine Webseite, wo Scroll passiert mit dem nächsten Abschnitt auf der Webseite auf einen Klick auf eine Schaltfläche. Kann jemand bitte vorschlagen, wie man diese Rolle festhält? Der Code befindet sich im Anker-Tag und href zeigt auf #, um zum nächsten Abschnitt auf der Seite zu blättern. Ich bin mir nicht sicher, wie man überprüft, ob scroll tatsächlich funktioniert hat.Capturing Scroll auf Knopfdruck
3
A
Antwort
2
Sie können behaupten/Check paar Dinge in diesem Fall:
die current URL auf den richtigen
#
Abschnitt Punkt:expect(browser.getCurrentUrl()).toEqual("https://url.com/mypage#myparagraph");
check die
scrollTop
Position desbody
Element (unter der Annahme, es ist was gescrollt - oder der andere scrollbare Container):var body = $("body"); expect(body.getCssValue("scrollTop")).toEqual("someValue"); // or apply the "greater than" check
- Kontrolle der current active element (vorausgesetzt, es ist ein Element, sobald die „Anker“ Absatz konzentrierte sich immer aktiv)
Lösung basierend auf Ihren Vorschlag
window.pageYOffset
zu verwenden - vergleichen Sie den Wert vor und nach dem Klick:browser.executeScript('return window.pageYOffset;').then(function (offsetBefore) { offsetBefore = parseInt(offsetBefore); button.click(); browser.executeScript('return window.pageYOffset;').then(function (offsetAfter) { offsetAfter = parseInt(offsetAfter); expect(offsetAfter).toBeGreaterThan(offsetBefore); }); });
3
Sie könnten prüfen, ob der Anker am oberen Rand des Fensters auf das Bildfenster, indem Sie das positon relativ mit getBoundingClientRect()
gescrollt wird:
browser.get('https://www.w3.org/TR/webdriver');
$("[href='#capabilities']").click();
// assert that the position of the anchor relative to the top border of the window is less than 16 pixels.
var anchor = $('#h-capabilities');
var isCloseToTop = browser.executeScript(e => !(e.getBoundingClientRect().top >> 4), anchor);
expect(isCloseToTop).toBeTruthy();
Beachten Sie, dass der Anker nicht ganz oben im Fenster liegt, sondern sich irgendwo innerhalb des Fensters befindet, wenn sich der Anker ganz unten im Dokument befindet. für mich
browser.get('https://www.w3.org/TR/webdriver');
$("[href='#informative-references']").click();
expect(isScrolledTop($('#h-informative-references'))).toBeTruthy();
function isScrolledTop(element) {
return browser.executeScript(function(elem) {
var doc = elem.ownerDocument,
viewHeight = doc.defaultView.innerHeight,
docBottom = doc.documentElement.getBoundingClientRect().bottom,
box = elem.getBoundingClientRect();
return box.top > -1 && (box.top < 25 || (docBottom - viewHeight) < 25);
}, element);
}
Verwandte Themen
- 1. Capturing Ausnahmen auf asynchronen Operationen
- 2. Capturing Strg + W auf Browser
- 3. Update JTextField auf Knopfdruck
- 4. Angularjs Aktion auf Knopfdruck
- 5. Winkelfilter nur auf Knopfdruck
- 6. CardView Lift auf Knopfdruck
- 7. Abfrage auf Knopfdruck ausführen
- 8. ng wiederholen auf Knopfdruck
- 9. Wie auf Knopfdruck
- 10. Bild auf Knopfdruck ändern
- 11. Capturing "xxxxxxxxxx"
- 12. React Native - Aktualisierungsstatus auf Knopfdruck
- 13. Anzeige von Bildserien auf Knopfdruck
- 14. Binding FocusAction Verhalten auf Knopfdruck
- 15. Anruffunktion auf Knopfdruck funktioniert nicht
- 16. JavaScript feuert nicht auf Knopfdruck
- 17. Blank ein Textfeld auf Knopfdruck
- 18. Bootstrap-Alarmbox auf Knopfdruck anzeigen
- 19. Keine Formularvalidierung auf Knopfdruck auslösen
- 20. Alle Links auf Knopfdruck zurückgeben
- 21. ID auf Knopfdruck in PHP
- 22. öffnet nicht SignInActivity auf Knopfdruck
- 23. Öffnen neuer Rahmen auf Knopfdruck
- 24. Kann Cufon auf Knopfdruck arbeiten?
- 25. Android - GridView auf Knopfdruck aktualisieren
- 26. Run-Funktion nur auf Knopfdruck
- 27. Funktion läuft nicht auf Knopfdruck?
- 28. Fokus Capturing auf einem bestimmten jQueryUI Registerkarte
- 29. UWP Start auf der Bildschirmtastatur auf Knopfdruck
- 30. Post-Text auf Facebook auf Knopfdruck
Leider keine dieser Arbeit: So sollten Sie auch diesen Fall mit einer allgemeineren Lösung in Betracht ziehen. 1. Ich kann den ersten nicht verwenden, da sich meine Browser-URL nicht ändert. Es bleibt genau so, wie es vorher war. 2. Ich kann scrollTop nicht überprüfen. Die folgenden Befehle funktionieren nicht in meiner Anwendung. Ich habe den folgenden Code verwendet und eine lange Liste von Befehlen gedruckt. '' var body = $ ("Körper"); var scrollposition = body.getCssValue ("scrollTop"); console.log (Bildlaufposition); '' .ElementFinder { browser_: ProtractorBr 3. Auf Knopfdruck, Browser konzentriert sich nicht auf ein Element. Es zeigt nur Karte.Ich glaube nicht, dass es Fokus – NewWorld
Unter Lösung arbeitete, aber ich wollte nicht Position in meinem Skript angeben. Ich habe Angst, Skript könnte fehlschlagen, wenn es in einer anderen Umgebung ausgeführt wird. 'browser.executeScript ('return window.pageYOffset;'). Then (Funktion (pos) { expect (pos) .toBe (829)}); ' Lassen Sie mich wissen, ob es eine bessere Lösung gibt. – NewWorld
@NewWorld ah okay, gut, Sie können den 'pageYOffset' Wert vor dem Klick und nachher erhalten und die Werte vergleichen. Ich hoffe, das hilft. – alecxe