2014-11-19 23 views
8

के साथ किसी तत्व पर स्क्रॉल करें मेरे पास उस पृष्ठ पर एक तत्व है जिसका मैं परीक्षण कर रहा हूं कि मुझे दृश्यमान होने के लिए नीचे स्क्रॉल करना होगा। जब मैं अपना परीक्षण निष्पादित करता हूं, तो मुझे मिलता है तत्व उदाहरण के लिए बिंदु (94, 188) पर क्लिक करने योग्य नहीं है।प्रोटैक्टर

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

लेकिन यह काम नहीं किया:

मैं निम्नलिखित की कोशिश की। क्या कोई जानता है कि यह कैसे काम करता है?

+3

[प्रोटैक्टर: स्क्रॉल डाउन] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/23571852/protractor-scroll-down) – glepretre

+0

मैंने इसे पढ़ा है। यह मेरे लिए काम नहीं किया है। – andrepm

उत्तर

1

मुझे लगता है कि यह आपके लिए उपयोगी है:

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

अपने webdriver उस बिंदु (1254,21) पढ़ने में असमर्थ है, कारण अपने चांदा ब्राउज़र पृष्ठ क्या आप चाहते हैं का पूरा कवर करने में असमर्थ है परीक्षण करने के लिए, फिर हम एक आदेश देते हैं कि ब्राउजर उस बिंदु पर स्क्रॉल करता है (1254,21), फिर क्लिक ऑपरेशन

9

window.scrollTo(x,x) समाधान मेरे लिए काम नहीं करता है। खासकर जब लहर एमुलेटर के खिलाफ परीक्षण। मैं इसे scrollIntoView विधि का उपयोग करके काम करने में कामयाब रहा।

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

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

यह आपको जवाब देने के लिए इतनी देर लगती है .. लेकिन वैसे भी,

निम्नलिखित कोड मुझे मदद की तत्व दूर करने के लिए क्लिक करने योग्य त्रुटि नहीं है।

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

elm.click(); 

मूल रूप से यह आप अपने दृश्य में स्क्रॉल अनुमति देता है,

+1

मेरे लिए एक आकर्षण की तरह काम किया। मेरे मामले में, परीक्षण क्रोम में गुजर जाएगा क्योंकि यह स्वतः स्क्रॉल करेगा, लेकिन फ़ायरफ़ॉक्स में परीक्षण विफल हो जाएगा। ScrollIntoView के साथ, परीक्षण दोनों ब्राउज़रों में गुजरता है। – Cebe

+0

धन्यवाद @ राहुल! आपने मेरा दिन बचा लिया! – metamaker

1

फ़ायरफ़ॉक्स और क्रोम चालकों के साथ मेरे लिए अच्छी तरह से काम कर रहे, NPM मॉड्यूल "SG-चांदा-उपकरण" उपयोग करने का प्रयास ..

यह एक साफ है पृष्ठ तत्वों पर स्क्रॉल करने का तरीका, अधिक जानकारी यहां https://www.npmjs.com/package/sg-protractor-tools

2

मैंने उस लिंक का उपयोग किया जिसे बासम ने सुझाव दिया और यह काम करता है। चरणों इस प्रकार हैं:

  1. हम निम्न आदेश के साथ SG-चांदा-उपकरण स्थापित करने के लिए (प्रयोग Sudo यदि आप व्यवस्थापक तक पहुँचता नहीं है) होगा: तो

    npm install --save-dev sg-protractor-tools 
    
  2. कोड कुछ इस तरह दिखेगा

    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); 
    }); 
}; 
(मैं विकिपीडिया पर इस कोशिश की)

उपयोग:

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

अस्वीकरण: इस कोड SG-चांदा-उपकरण के scroll.js से है।
कोड एमआईटी लाइसेंस के तहत लाइसेंस प्राप्त है।

संबंधित मुद्दे