【问题标题】:Want to move down using scrollbar selenium webdriver想要使用滚动条 selenium webdriver 向下移动
【发布时间】:2013-12-27 06:36:47
【问题描述】:

我需要使用 selenium webdriver 在网页上使用滚动条向下移动

我使用了以下代码

Actions dragger = new Actions(driver);
WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("/html/body/section[2]/div/div[2]/div/div/div"));
int numberOfPixelsToDragTheScrollbarDown = 5000;
dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();

它仍然没有向下移动...xpath 正在根据滚动条的位置发生变化...

【问题讨论】:

    标签: c# selenium


    【解决方案1】:

    如果您试图通过向下滚动来定位某个元素,则以下代码将滚动直到该元素在视图中。

    WebElement element = driver.findElement(By.id("id_of_element"));
    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
    Thread.sleep(500); 
    
    //do anything you want with the element
    

    【讨论】:

    • 您要查找的元素是什么?
    • 你能提供这个html吗?
    • WebElement element = driver.findElement(By.id("id_of_element"));..这里应该提到文本区域的ID..你这样做了吗?
    • Amith003 的这个回答基本上是正确的想法。您还可以使用 JavaScriptExecutor 发送 Key.DOWN 消息以通过键盘进行翻页。这就是我这样做的方式,因为我也无法让 scrollIntoView 工作......
    【解决方案2】:

    我的代码在 python..希望它可以帮助你,你可以将它复制到 java

    actionChains = ActionChains(driver)
    option=driver.find_element_by_class_name("mCSB_dragger_bar")
    actionChains.click_and_hold(option).perform()
    actionChains.move_by_offset(0,5000).perform()
    actionChains.release()
    

    上面的代码可以简化为

    actionChains = ActionChains(driver)
    option=driver.find_element_by_class_name("mCSB_dragger_bar")
    actionChains.click_and_hold(option).move_by_offset(0,5000).release().perform()
    

    【讨论】:

      【解决方案3】:
        JavascriptExecutor js=(JavascriptExecutor)driver;
        js.executeScript("window.scrollBy(0,100)");
      

      【讨论】:

        【解决方案4】:

        Java 代码如下:

        public void moveOverElement(WebElement element)
                {
                    Actions actions = new Actions(driver);
        
                    actions.clickAndHold(element).moveByOffset(0,5000).release().perform();
        
                }
        

        对于定义 WebElement,对于 webelement,您只需定义路径:

        @FindBy (xpath = ".//*[contains(@class, 'link-name') and text() = 'QAEbox']")
        
            private WebElement createdQABoxElement;
        

        【讨论】:

          【解决方案5】:

          Actions dragger = new Actions(driver); WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("/html/body/section[2]/div/div[2]/div/div/div")); int numberOfPixelsToDragTheScrollbarDown = 5000; dragger.moveToElement(draggablePartOfScrollbar).clickAndHold(draggablePartOfScrollbar).moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();

          此代码对我有用,并进行了以下更正。

          1. 拥有正确的 xpath。我单击了检查元素并右键单击 xpath 的元素并复制。
          2. 在 clickandHold 转换中添加 WebElement。
          3. 还要确保 numberOfPixelsToDragTheScrollbarDown 与您要向下拖动的确切像素匹配。

          它起到了魅力的作用。感谢您的代码。

          【讨论】:

            【解决方案6】:

            scroll=By.xpath("//*[@id='aspnetForm']/center/div/div[2]/table/tbody/tr[2]/td[1]/table/tbody");
                    WebElement scrollUp = driver.findElement(scroll);
                    scrollUp.sendKeys(Keys.PAGE_DOWN);
                    scrollUp.sendKeys(Keys.PAGE_DOWN);
                    scrollUp.sendKeys(Keys.PAGE_DOWN);
                    scrollUp.sendKeys(Keys.PAGE_DOWN);
            

            向上滚动:

            scrollUp.sendKeys(Keys.PAGE_DOWN);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-10-11
              • 2013-04-14
              • 1970-01-01
              • 1970-01-01
              • 2012-08-30
              相关资源
              最近更新 更多