簡體   English   中英

Selenium Webdriver(Java)創建滾動類

[英]Selenium Webdriver (Java) Creation a class for Scrolling

我正在嘗試為不同類型的滾動創建一個類(向上,向下,頁面底部等),但我無法完成。

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.chrome.ChromeDriver;

public class ScrollPage {

    public static void scrolldown(String element) throws Exception {

        System.setProperty("webdriver.chrome.driver", "C:\\JAVA\\DRIVER\\chromedriver.exe");
        ChromeDriver driver = new ChromeDriver();       

        //Scroll 1/4 página
        JavascriptExecutor jse1 = (JavascriptExecutor) driver;
        jse1.executeScript("scroll(0,250);");
        }
    /*
        public static void scrolldown2(String element) throws Exception {       
        //Scroll hasta la mitad
        JavascriptExecutor jse2 = (JavascriptExecutor) driver;
        jse2.executeScript("scroll(0,500);");
        }

        public static void scrolldown3(String element) throws Exception {       
        //Scroll hasta el final
        JavascriptExecutor jse3 = (JavascriptExecutor) driver;
        jse3.executeScript("scroll(0,1000);");
        }
   */   
        //Otra forma de Scroll hasta el final
 /*     JavascriptExecutor jse = (JavascriptExecutor)driver;
        jse.executeScript("window.scrollTo(0,Math.max"
                + "(document.documentElement.scrollHeight,"
                + "document.body.scrollHeight,document.documentElement.clientHeight));");

    public static void scrollup(String element) throws Exception {  
        //Scroll hasta arriba
        JavascriptExecutor jse4 = (JavascriptExecutor) driver;
        jse4.executeScript("scroll(1000,0);");
        }

        public static void slowmotion (String element) throws Exception {   
        //Scroll en cámara lenta
        for (int second = 0;; second++) {
            if(second >=60){
                break;
            }
        ((JavascriptExecutor) driver).executeScript("window.scrollBy(0,1000)", "");
        }


    }
*/
}

之后,在另一個類中,我想調用一個特定的滾動:

ScrollPage.scrolldown();

請幫我。

我在您的代碼中看到很多錯誤:

  1. 您正在使用scrolldown方法弄亂驅動程序實例化。 從中刪除所有與滾動無關的內容。
  2. 為了滾動工作,顯然,應該打開一些可滾動的網頁。 在您的滾動方法中,不會打開任何頁面-只是空白的瀏覽器起始頁面。 driver.get(<some url>)使用driver.get(<some url>)方法
  3. 一旦打開可滾動頁面-調用(JavascriptExecutor)driver.executeScript("window.scrollBy(0,250)", ""); 將窗口滾動250個像素

這不是Selenium Java的問題,這與面向對象的編程有關。 您熟悉Java類的工作方式嗎?

  1. 創建一個名為ScrollMethods之類的新類,並將所有滾動方法放入該類中。

  2. 在測試中,您只需要實例化該類:

    ScrollMethods scrollMethods = new ScrollMethods();

現在,您應該可以在測試類中調用Scroll Methods。

您使用了錯誤的Java Script命令滾動窗口。

嘗試這個 :-

 JavascriptExecutor jse1 = (JavascriptExecutor) driver;
        jse1.executeScript("window.scroll(0,250);");

我的代碼中有一些問題。

正確的是下一個:

 package Util; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.chrome.ChromeDriver; public abstract class ScrollPage { public static void doScrollDown250(ChromeDriver driver)throws Exception{ JavascriptExecutor jse = driver; jse.executeScript("scroll(0, 250);"); } public static void doScrollDown500(ChromeDriver driver)throws Exception { JavascriptExecutor jse2 = (JavascriptExecutor) driver; jse2.executeScript("scroll(0,500);"); } public static void doScrollUp(ChromeDriver driver)throws Exception { JavascriptExecutor jse2 = (JavascriptExecutor) driver; jse2.executeScript("scroll(0,000);"); } public static void doScrolldown1000(ChromeDriver driver)throws Exception { JavascriptExecutor jse3 = (JavascriptExecutor) driver; jse3.executeScript("scroll(0,1000);"); } //Slow Motion Down public static void slowmotionDown(ChromeDriver driver) throws Exception { for (int second = 0;; second++) { if(second >=60){ break; } ((JavascriptExecutor) driver).executeScript("window.scrollBy(0,13)", ""); } } //Slow Motion Up public static void slowmotionUp(ChromeDriver driver) throws Exception { for (int second = 0;; second++) { if(second >=60){ break; } ((JavascriptExecutor) driver).executeScript("window.scrollBy(1000,13)", ""); } } //From Left to Right public static void Left2Right(ChromeDriver driver) throws Exception { JavascriptExecutor js = (JavascriptExecutor)driver; js.executeScript("window.scrollBy(2000,0)", ""); } //From Right to Left public static void Right2Left(ChromeDriver driver) throws Exception { JavascriptExecutor jsx = (JavascriptExecutor)driver; jsx.executeScript("window.scrollBy(-2000,0)", ""); } //Scroll Down the Element Web, in this case, Ver Detalles del Plan (Modify the Xpath) public static void WebElement (ChromeDriver driver) throws Exception{ ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", driver.findElement(By.xpath("//*[@id='option1']/div[1]/div[5]/a"))); } } 

之后,在另一個類中,我們將用以下語句調用以下任何方法:

ScrollPage.slowmotionDown(driver);
            Thread.sleep(3000);

請記住聲明導入和ChromeDriver

導入org.openqa.selenium.chrome.ChromeDriver;

導入Util.ScrollPage; 公共類banner1擴展ScrollPage {

public static void main(String[] args) throws Exception {

    System.setProperty("webdriver.chrome.driver", "C:\\JAVA\\DRIVER\\chromedriver.exe");
    ChromeDriver driver = new ChromeDriver();   

對於向下滾動頁面慢動作,代碼為:

public static void slowmotionDown(InternetExplorerDriver driver) throws Exception {
        for (int second = 0;; second++) {
            if(second >=60){
                break;
            }
            ((JavascriptExecutor) driver).executeScript("window.scrollBy(0,13)", "");
        }
    }

對於向上滾動頁面,代碼為:

 public static void slowmotionUp(InternetExplorerDriver driver) throws Exception {
        for (int second = 0;; second++) {
            if(second >=60){
                break;
            }
            ((JavascriptExecutor) driver).executeScript("window.scrollBy(1000,-13)", "");
        }
    }

一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM