【问题标题】:Selenium python unable to scroll downSelenium python 无法向下滚动
【发布时间】:2016-05-19 08:15:08
【问题描述】:

尝试使用 selenium-webdriver python 向下滚动到页面底部,以便加载更多产品。

driver = webdriver.Firefox()
driver.get('https://www.woolworths.com.au/Shop/Browse/back-to-school/free-school-labels')
driver.implicitly_wait(100)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(100)
driver.quit()

网页加载但不改变。

我错过了什么吗?

【问题讨论】:

    标签: python python-2.7 selenium selenium-webdriver


    【解决方案1】:

    你可以试试这些 move_up 和 move_down 函数:

    driver.maximize_window()
    driver.get('https://www.woolworths.com.au/Shop/Browse/back-to-school/free-school-labels')
    driver.implicitly_wait(15)
    centerPanel = driver.find_element_by_css_selector("#center-panel > div[class*='hideScroll-wrapper']")
    jsScript = """
            function move_up(element) {
                element.scrollTop = element.scrollTop - 1000;
            }
    
            function move_down(element) {
                element.scrollTop = element.scrollTop + 1000;
            }
    
            move_down(arguments[0]);
            move_down(arguments[0]);
            """
    driver.execute_script(jsScript, centerPanel)
    
    time.sleep(3) 
    
    jsScript = """
            function move_up(element) {
                element.scrollTop = element.scrollTop - 1000;
            }
    
            function move_down(element) {
                console.log('Position before: ' + element.scrollTop);
                element.scrollTop = element.scrollTop + 1000;
                console.log('Position after: ' + element.scrollTop);
            }
    
            move_up(arguments[0]);
            """
    driver.execute_script(jsScript, centerPanel)
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用Action Chains

      element = driver.find_element_by_id("id") # the element you want to scroll to 
      ActionChains(driver).move_to_element(element).perform()
      

      【讨论】:

        【解决方案3】:

        我刚刚尝试过这种方法,它对我有用:

        element = driver.find_element_by_xpath("//div[@class='center-content']")
        driver.execute_script("return arguments[0].scrollIntoView(0, document.documentElement.scrollHeight-10);", element)
        

        首先选择要向下滚动的页面的div 元素,然后在该元素内向下滚动

        OBS:我在定义 scrollHeight 时添加了一个偏移量,因为如果您滚动到绝对底部,它不会加载更多对象。当您靠近底部而没有到达它时,它开始加载目录。

        document.documentElement.scrollHeight-10
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-23
          • 1970-01-01
          • 1970-01-01
          • 2017-11-06
          相关资源
          最近更新 更多