【问题标题】: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