【问题标题】:Selenium Scroll inside of popup div弹出div内的硒滚动
【发布时间】:2016-10-28 18:14:35
【问题描述】:

我正在使用 selenium 并尝试在 instagram 上的弹出 div 内滚动。

我进入类似“https://www.instagram.com/kimkardashian/”的页面,点击关注者,然后我无法让关注者列表向下滚动。

我尝试使用 hover、click_and_hold 和其他一些技巧来选择 div,但它们都不起作用。

选择这个最好的方法是什么?

这是我迄今为止尝试过的:

driver.find_elements_by_xpath("//*[contains(text(), 'followers')]")[0].click()
element_to_hover_over = driver.find_elements_by_xpath("//*[contains(text(), 'Follow')]")[12]
hover = ActionChains(webdriver).move_to_element(element_to_hover_over)
hover.click_and_hold()
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

【问题讨论】:

    标签: python selenium screen-scraping


    【解决方案1】:

    具体代码如下。您首先必须找到包含关注者名称的新 iframe:

    scr1 = driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div/div[2]')
    driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scr1)
    

    这将自动向下滚动页面,但您已经为其创建了一个 for 循环,直到它到达页面末尾。你可以看到我的 Instagram 爬虫here

    【讨论】:

    • 我遇到了类似的问题,你的想法可以帮助我。
    • 向下滚动对我有用。但是,我想要一个向上滚动的脚本。请你指导我好吗?
    • 我已经尝试了好几个小时...谢谢!
    【解决方案2】:

    您需要使用 jQuery 在 div 上执行函数。这是我想这样做的方式。用jQuery解决它并执行脚本比用api处理它更容易。

    height = 2000
    query = 'jQuery("div").filter((i, div) => jQuery(div).css("overflow-y") == "scroll")[0].scrollTop = %s' %height
    driver.execute_script(query)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多