【问题标题】:How do I scroll a sub element using Webdriver and javascript?如何使用 Webdriver 和 javascript 滚动子元素?
【发布时间】:2013-12-18 12:03:19
【问题描述】:

我希望能够滚动我个人 YouTube 页面的订阅列表,我该怎么做?我编写了允许我滚动主页的代码,关于如何调整代码以滚动登录 YouTube 时出现的 YouTube 页面的“我的订阅”部分的任何想法?

package Check;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class java {

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub
        FirefoxDriver driver = new FirefoxDriver();
        driver.get("https://www.youtube.com");
        Thread.sleep(2500);
        driver.findElement(By.xpath("//button[contains(.,'Sign in')]")).click();
        Thread.sleep(1500);
        driver.findElementById("Email").sendKeys("<My username>");
        driver.findElementById("Passwd").sendKeys("<My password>");
        driver.findElementById("signIn").click();
        //driver.findElement(By.xpath("//button[contains(.,'Sign in')]")).click();
        Thread.sleep(3500);
        driver.findElementByCssSelector("div[id='identity-prompt-account-list'] > ul > label + label").click();
        driver.findElementById("identity-prompt-confirm-button").click();
        Thread.sleep(2500);
        JavascriptExecutor js = (JavascriptExecutor)driver;
        js.executeScript("window.scrollTo(0,Math.max(document.documentElement.scrollHeight," +
        "document.body.scrollHeight,document.documentElement.clientHeight));");
        Thread.sleep(5000);
        driver.quit();
    }
}

【问题讨论】:

    标签: java javascript selenium-webdriver


    【解决方案1】:

    我通过反复试验的方法发现了一种可行的方法,通过 CSS 选择器似乎仅限于查找第 35 个兄弟,因此鉴于此限制,这里是我想出的代码非常适合我想要完成的工作。下面是我的脚本:

    package Check;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    public class java2 {
    
        public static void main(String[] args) throws InterruptedException {
            FirefoxDriver driver = new FirefoxDriver();
            driver.get("https://www.youtube.com");
            Thread.sleep(2500);
            driver.findElement(By.xpath("//button[contains(.,'Sign in')]")).click();
            Thread.sleep(1500);
            driver.findElementById("Email").sendKeys("<User name>");
            driver.findElementById("Passwd").sendKeys("<Password>");
            driver.findElementById("signIn").click();
            Thread.sleep(4000);
            driver.findElementByCssSelector("div[id='identity-prompt-account-list'] > ul > label + label").click();
            driver.findElementById("identity-prompt-confirm-button").click();
            Thread.sleep(3000);
            JavascriptExecutor js = (JavascriptExecutor)driver;
            int i =0;
            String CSSText = "ul[id='guide-channels'] > li";
            do {
                if (driver.findElementByCssSelector(CSSText).getText().equals("Josie Outlaw")){
                    break;
                }
                CSSText = CSSText + " + li";
                i++;
            } while (i<35);
            js.executeScript("document.getElementsByClassName(\"vve-check overflowable-list-item guide-channel\")["+i+"].scrollIntoView(false);");
            Thread.sleep(1500);
            js.executeScript("document.getElementsByClassName(\"vve-check overflowable-list-item guide-channel\")["+i+"].scrollIntoView(true);");
            Thread.sleep(10000);
            driver.quit();
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 2021-09-02
      • 2013-03-09
      • 2017-12-07
      相关资源
      最近更新 更多