2012-09-06 10 views
39

का उपयोग कर रहा जावा का उपयोग कर पृष्ठ स्क्रॉल के लिए सेलेनियम 1 (उर्फ सेलेनियम आर सी) में निम्न कोड में लिखा है:पृष्ठ स्क्रॉल ऊपर या नीचे सेलेनियम WebDriver में (सेलेनियम 2) जावा

selenium.getEval("scrollBy(0, 250)"); 

क्या में बराबर कोड है सेलेनियम 2 (वेबड्राइवर)?

उत्तर

78

नीचे स्क्रॉल के लिए:

WebDriver driver = new FirefoxDriver(); 
JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("window.scrollBy(0,250)", ""); 

या, आप के रूप में कर सकते हैं इस प्रकार है:

jse.executeScript("scroll(0, 250);"); 

स्क्रॉल के लिए ऊपर:

jse.executeScript("window.scrollBy(0,-250)", ""); 
OR, 
jse.executeScript("scroll(0, -250);"); 
+0

उपरोक्त कोड स्क्रॉल डाउन के लिए है। स्क्रॉल अप के लिए: jse.executeScript ("स्क्रॉल (250, 0)"); केवल मूल्य –

+8

नहीं होगा - यह दाईं ओर स्क्रॉल करेगा। स्क्रॉल अप 'स्क्रॉल (0, -250) ' – Stephen

+0

धन्यवाद स्टीफन होगा। स्क्रॉल (250,0) और स्क्रॉल (0, -250) दोनों स्क्रॉल अप के लिए काम करना चाहिए। –

0

इस

प्रयास करें
 Actions dragger = new Actions(driver); 
     WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("//*[@id='jobreslist_outercontainer']/div/div[2]/div")); 

     // drag downwards 
     int numberOfPixelsToDragTheScrollbarDown = 50; 
     for (int i=10;i<500;i=i+numberOfPixelsToDragTheScrollbarDown){ 
      try{ 
     // this causes a gradual drag of the scroll bar, 10 units at a time 
     dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform(); 
     Thread.sleep(1000L); 
      }catch(Exception e1){} 
     } 

     // now drag opposite way (downwards) 
     numberOfPixelsToDragTheScrollbarDown = -50; 
     for (int i=500;i>10;i=i+numberOfPixelsToDragTheScrollbarDown){ 
     // this causes a gradual drag of the scroll bar, -10 units at a time 
     dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform(); 
     Thread.sleep(1000L); 
     } 
+0

मुझे वास्तव में यह पसंद है क्योंकि यह स्क्रॉल करता है कि उपयोगकर्ता – KthProg

8

यह आपके प्रश्न का सटीक उत्तर (WebDriver के संदर्भ में) नहीं हो सकता है, लेकिन मैं पाया है कि java.awt पुस्तकालय selenium.Keys से अधिक स्थिर है। तो, पूर्व का उपयोग कर एक कार्रवाई पृष्ठ नीचे हो जाएगा:

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_PAGE_DOWN); 
robot.keyRelease(KeyEvent.VK_PAGE_DOWN); 
+0

कैसे पहले रोबोट का उपयोग नहीं करता था। लेकिन मैं उपयोग करने की कोशिश कर सकते हैं। धन्यवाद rs79 –

+1

दुर्भाग्यवश, उपरोक्त कोड मेरे लिए काम नहीं किया –

+0

क्या आपके पास प्रासंगिक Thread.sleep (xxx) कमांड हैं? – rs79

8

वहाँ सेलेनियम Webdriver में नीचे मैं हमेशा जावा स्क्रिप्ट का उपयोग भी ऐसा ही करने के लिए स्क्रॉल करें और करने के लिए कई तरीके हैं।

नीचे कोड जो हमेशा मेरे लिए काम करता है अगर मैं ऊपर स्क्रॉल करने के लिए या नीचे

// This will scroll page 400 pixel vertical 
    ((JavascriptExecutor)driver).executeScript("scroll(0,400)"); 

फिर यदि आप नीचे एक तत्व के लिए स्क्रॉल करने के लिए चाहते हैं, तो आप यहाँ Scroll Page in Selenium

से पूर्ण कोड प्राप्त कर सकते हैं चाहता हूँ कोड का टुकड़ा आपके लिए काम करेगा।

je.executeScript("arguments[0].scrollIntoView(true);",element); 

पूर्ण डॉक यहाँ Scroll for specific Element

+0

अगर मुझे स्क्रॉल करना है तो यह काम करता है। मैं पेज को कैसे स्क्रॉल कर सकता हूं? –

+0

कोड का पहला स्निपेट केवल पृष्ठ को स्क्रॉल करता है, तत्व नहीं, मैं यह कैसे कर सकता हूं? –

30

एक पृष्ठ के निचले हिस्से तक स्क्रॉल मिल जाएगा:

JavascriptExecutor js = ((JavascriptExecutor) driver); 
js.executeScript("window.scrollTo(0, document.body.scrollHeight)"); 
+1

बस उल्लेख करने के लिए, यह – Tarun

0

आप Selenium.executeScript("window.scrollBy(0,450)", "") का उपयोग कर सभी तत्वों का चयन करने के पृष्ठ पर एक पुस्तक जोड़ना चाहिए।

यदि आपके पास बड़ी सूची है, तो निष्पादन के माध्यम से कई बार स्क्रॉल जोड़ें। नोट स्क्रॉल केवल पृष्ठ में एक निश्चित बिंदु पर जाएं उदाहरण के लिए (0,450)।

0
JavascriptExecutor jse = ((JavascriptExecutor) driver); 
jse.executeScript("window.scrollTo(0, document.body.scrollHeight)"); 

यह कोड मेरे लिए काम करता है। जिस पृष्ठ पर मैं परीक्षण कर रहा हूं, उतना ही लोड होता है जितना हम नीचे स्क्रॉल करते हैं।

0

जावास्क्रिप्ट निष्पादक हमेशा काम पूरी तरह से करता है:

((JavascriptExecutor) driver).executeScript("scroll(0,300)"); 

जहां (0,300) क्रमशः क्षैतिज और ऊर्ध्वाधर दूरी है। अपनी आवश्यकताओं के अनुसार अपनी दूरी रखो।

यदि आप एक पूर्णतावादी हैं और पहले प्रयास पर स्क्रॉल करना चाहते हैं तो सटीक दूरी प्राप्त करना चाहते हैं, तो इस टूल का उपयोग करें, MeasureIt। यह एक शानदार फ़ायरफ़ॉक्स ऐड-ऑन है।

1

मैं JavaScript, या किसी भी बाहरी पुस्तकालयों का उपयोग नहीं करना चाहता था, तो यह मेरे समाधान (सी #) था:

IWebElement body = Driver.FindElement(By.TagName("body")); 

IAction scrollDown = new Actions(Driver) 
    .MoveToElement(body, body.Size.Width - 10, 15) // position mouse over scrollbar 
    .ClickAndHold() 
    .MoveByOffset(0, 50) // scroll down 
    .Release() 
    .Build(); 

scrollDown.Perform(); 

तुम भी आसानी से किसी भी तत्व पर ऊपर और नीचे स्क्रॉल या के लिए इस एक विस्तार विधि बना सकते हैं ।

+1

स्क्रॉल डाउन के लिए है यह कोड हेडलेस ब्राउज़र पर काम नहीं करेगा – raffamaiden

+0

@raffamaiden अपने ब्राउज़र लॉल पर सिर डालता है ... मुझे यकीन नहीं है कि कोई भी ऐसे ब्राउज़र के खिलाफ परीक्षण क्यों करना चाहेगा जो उनके उपयोगकर्ता हैं वास्तव में किसी भी तरह का उपयोग करने जा रहे हैं – KthProg

+0

आप सही हैं। लेकिन ओपी ने यह निर्दिष्ट नहीं किया कि यह एक ऐप का परीक्षण कर रहा था। आप सेलेनियम का उपयोग अन्य उद्देश्यों के लिए भी कर सकते हैं (जैसे वेबक्रैपिंग)। – raffamaiden

2
JavascriptExecutor js = ((JavascriptExecutor) driver); 

नीचे स्क्रॉल:

js.executeScript("window.scrollTo(0, document.body.scrollHeight);"); 

ऊपर स्क्रॉल करें:

js.executeScript("window.scrollTo(0, -document.body.scrollHeight);"); 
0

रिपन अल वसीम के जवाब के लिए धन्यवाद। मैंने कुछ सुधार किया। नेटवर्क समस्याओं की वजह से, मैं ब्रेक लूप तक तीन बार पुनः प्रयास करता हूं।

driver.get(url) 
# Get scroll height 
last_height = driver.execute_script("return document.body.scrollHeight") 
try_times = 0 
while True: 
    # Scroll down to bottom 
    driver.execute_script("window.scrollBy(0,2000)") 

    # Wait to load page 
    time.sleep(scroll_delay) 
    # Calculate new scroll height and compare with last scroll height 
    new_height = driver.execute_script("return document.body.scrollHeight") 

    if last_height == new_height: 
     try_times += 1 

    if try_times > 3: 
     try_times = 0 
     break 
    last_height = new_height 
संबंधित मुद्दे