2014-11-19 14 views
8

Ho un elemento nella pagina che sto testando che devo scorrere verso il basso per essere visibile. Quando eseguo il test, ottengo l'elemento non selezionabile al punto (94, 188) per esempio.Scorri verso il basso fino a un elemento con rapportatore

ho provato la seguente:

dvr.executeScript('window.scrollTo(0,250);'); 

Ma non ha funzionato. Qualcuno sa come funziona?

+3

possibile duplicato di [Goniometro: scorrere verso il basso] (http://stackoverflow.com/questions/23571852/protractor-scroll-down) – glepretre

+0

Ho letto già questo. Non ha funzionato per me. – andrepm

risposta

1

Credo che questo sia utile a voi:

dvr.executeScript('window.scrollTo(94,188);').then(function() { 
    element(by.<<here your button locator>>).click(); 
}) 

tua WebDriver non è in grado di leggere quel punto (1254,21), il motivo è il browser goniometro in grado di coprire l'intera pagina ciò che vuoi per testare, quindi dare un comando che il browser è scorrere fino a quel punto (1254,21), quindi eseguire l'operazione di clic

9

La soluzione window.scrollTo(x,x) non ha funzionato per me. Specialmente durante il test contro l'emulatore di ripple. Sono riuscito a farlo funzionare utilizzando il metodo scrollIntoView.

var scrollToScript = 'document.getElementById("ELEMENT ID").scrollIntoView();'; 

browser.driver.executeScript(scrollToScript).then(function() { 
    element(by.id('ELEMENT ID')).click(); 
    expect(...); 
}); 
31

Questo sembra così tardi per rispondere a voi .. Ma comunque,

Il seguente codice mi ha aiutato a rimuovere la elemento non è cliccabile errore.

var elm = element.all(by.css('.your-css-class')).get(9); 
browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement()); 

elm.click(); 

Fondamentalmente questo permette di scorrere nella vostra vista ..

+1

ha funzionato come un incantesimo per me. Nel mio caso, il test sarebbe passato in Chrome perché sarebbe stato auto-scroll, ma il test avrebbe avuto esito negativo in Firefox. Con scrollIntoView, passa i test in entrambi i browser. – Cebe

+0

Grazie @Rahul! Mi hai salvato la giornata! – metamaker

2

Ho usato il collegamento suggerito da Bassem e che funziona. I passi sono i seguenti:

  1. Dovremo installare sg-goniometro-tools con il seguente comando (Usa Sudo se non si dispone di amministratore accessi):

    npm install --save-dev sg-protractor-tools 
    
  2. Il codice quindi sarebbe simile a questo (ho provato questo su wikipedia)

    var sgpt = require('sg-protractor-tools'); 
    it ('verify that scroll works', function() 
        { 
        browser.get('http://wikipedia.org');            
        browser.manage().window().setSize(1000, 1000); 
        sgpt.scroll.scrollTo(element(by.linkText('Terms of Use'))); 
        } 
    ); 
    
3
'use strict'; 

/** 
* Vertically scroll top-left corner of the given element (y-direction) into viewport. 
* @param scrollToElement element to be scrolled into visible area 
*/ 
function scrollTo(scrollToElement) { 
    var wd = browser.driver; 
    return scrollToElement.getLocation().then(function (loc) { 
     return wd.executeScript('window.scrollTo(0,arguments[0]);', loc.y); 
    }); 
}; 

Uso:

scrollTo(element(by.css("div.someclass"))); 

Esonero di responsabilità: questo codice è da SG-goniometro-tools 's scroll.js.
Il codice è concesso in licenza secondo la licenza MIT.

Problemi correlati