SeleniumWebDriver(Java)创建用于滚动的类

SeleniumWebDriver(Java)创建用于滚动的类,java,selenium,selenium-webdriver,automation,Java,Selenium,Selenium Webdriver,Automation,我正在尝试为不同类型的卷轴(向上、向下、页面底部等)创建一个类,但我不能这样做 import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.chrome.ChromeDriver; public class ScrollPage { public static void scrolldown(String element) throws Exception { System.se

我正在尝试为不同类型的卷轴(向上、向下、页面底部等)创建一个类,但我不能这样做

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()


请帮帮我。

这不是Selenium Java的问题,这与面向对象编程有关。您熟悉java类的工作方式吗

  • 创建一个名为ScrollMethods的新类,并将所有scroll方法放在该类中

  • 在测试中,您只需实例化该类:

    ScrollMethods ScrollMethods=新的ScrollMethods()


  • 现在,您应该可以在测试类中调用Scroll方法了。

    我看到您的代码中有很多错误:

  • 您正在混乱
    滚动
    方法中的驱动程序实例化。从中删除所有与滚动无关的内容
  • 显然,为了使滚动正常工作,应该打开一些可滚动的网页。在滚动方法中,没有打开任何页面-只有空白的浏览器起始页。为此使用
    driver.get()
    方法
  • 打开可滚动页面后,调用
    (JavascriptExecutor)driver.executeScript(“window.scrollBy(0250)”,”将窗口滚动250像素

  • 您使用了错误的java脚本命令来滚动窗口

    试试这个:-

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

    我的代码中有一些问题

    正确的选择是下一个:

    package-Util;
    导入org.openqa.selenium.By;
    导入org.openqa.selenium.JavascriptExecutor;
    导入org.openqa.selenium.chrome.ChromeDriver;
    公共抽象类滚动页面{
    公共静态void DoscorlDown250(ChromeDriver驱动程序)引发异常{
    JavascriptExecutor jse=驱动程序;
    executeScript(“滚动(0250);”;
    }
    公共静态void doscorldown500(ChromeDriver驱动程序)引发异常{
    JavascriptExecutor jse2=(JavascriptExecutor)驱动程序;
    jse2.executeScript(“滚动(0500);”;
    }
    publicstaticvoiddoscorlup(ChromeDriver驱动程序)引发异常{
    JavascriptExecutor jse2=(JavascriptExecutor)驱动程序;
    jse2.executeScript(“滚动(0000);”;
    }
    公共静态void DoscorlDown1000(ChromeDriver驱动程序)引发异常{
    JavascriptExecutor jse3=(JavascriptExecutor)驱动程序;
    jse3.executeScript(“滚动(01000);”;
    }
    //慢动作
    公共静态void slowmotionDown(ChromeDriver驱动程序)引发异常{
    for(int second=0;second++){
    如果(秒>=60){
    打破
    }
    ((JavascriptExecutor)driver.executeScript(“window.scrollBy(0,13)”,”);
    }
    }
    //慢动作向上
    公共静态void slowmotionUp(ChromeDriver驱动程序)引发异常{
    for(int second=0;second++){
    如果(秒>=60){
    打破
    }
    ((JavascriptExecutor)driver.executeScript(“window.scrollBy(1000,13)”,”);
    }
    }
    //从左到右
    公共静态void Left2Right(ChromeDriver驱动程序)引发异常{
    JavascriptExecutor js=(JavascriptExecutor)驱动程序;
    js.executeScript(“window.scrollBy(2000,0)”,“”);
    }
    //从右到左
    公共静态void Right2Left(ChromeDriver驱动程序)引发异常{
    JavascriptExecutor jsx=(JavascriptExecutor)驱动程序;
    jsx.executeScript(“window.scrollBy(-2000,0)”,“”);
    }
    //向下滚动元素Web,在本例中为Ver Detalles del Plan(修改Xpath)
    公共静态void WebElement(ChromeDriver驱动程序)引发异常{
    ((JavascriptExecutor)driver.executeScript(“参数[0]。ScrollingToView();”,
    driver.findelelement(By.xpath(“/*[@id='option1']]/div[1]/div[5]/a”);
    }
    
    }
    对于向下滚动页面慢速移动,代码为:

    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)", "");
            }
        }
    
    对于Scrollpage slowmotion up,代码为:

    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)", "");
            }
        }
    

    这很好。

    您的问题需要编辑[如何提问]()嗨,smit9243:我不太清楚OOP,但这正是我想做的。我想从该类调用(或调用)另一个类中的方法。我修改了答案,如果您还有其他问题,请告诉我。抱歉,这里的问题是因为向上滚动方法(慢动作)不起作用。我正试图从另一个类调用该类。哦,但是我在尝试运行慢动作向上滚动时遇到了一个问题://慢动作向上公共静态void slowmotionUp(ChromeDriver驱动程序)抛出异常{for(int second=0;;second++){if(second>=60){break;}((JavascriptExecutor)驱动程序)(1000,13)", ""); } }