【问题标题】:Selenium python: can't scroll down an overlay windowSelenium python:无法向下滚动覆盖窗口
【发布时间】:2018-09-03 05:18:47
【问题描述】:

在 Quora 上,我想滚动到单击查看赞成票按钮时得到的窗口底部,为了获得所有赞成票的姓名,向下滚动标准浏览器窗口的代码似乎不适用于覆盖窗口,有什么建议吗? 这是我的滚动功能代码和点击“查看投票者”按钮的代码:

def scrolldown(browser):

    src_updated = browser.page_source
    src = ""
    while  src != src_updated:
        src = src_updated
        time.sleep(5)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(5)
        src_updated = browser.page_source      
    #if (DEBUG): print ("window maximized...")
    return browser

browser.get('https://www.quora.com/What-is-it-like-to-regret-having-children')
for p in browser.find_elements_by_class_name('AnswerVoterListModalLink'):
        time.sleep(5)

        p.click()
        time.sleep(5)
        browser=scrolldown(browser)
        time.sleep(5)
        c=0
        for div in upvoter_name :#browser.find_elements_by_class_name('author_info'):
           list_of_upvoters.append(div.find_element_by_class_name('user').text)
           c+=1
        print("number of upvoters for this answer is :" + str(c))

【问题讨论】:

    标签: python html selenium web-scraping quora


    【解决方案1】:

    我认为您可以使用this answer 中的内容向下滚动到最后一个元素。根据答案,您可以使用以下内容向下滚动到最后一个元素:

    from selenium.webdriver.common.action_chains import ActionChains
    
    element = driver.find_element_by_xpath("//div[@class='pagedlist_item'][last()]")
    
    actions = ActionChains(driver)
    actions.move_to_element(element).perform()
    

    【讨论】:

    • 在这种情况下最后一个元素是什么意思?最后一个“查看投票”按钮?还是列表中最后一个支持者用户名?
    • @Youcef : element 在这里是一个网络元素。
    • 如果您使用开发人员工具查看 quora,帖子会像 this 一样列出,并且此 xpath 会选择最后一个帖子。
    • 当然,你不应该滚动那个元素,你可以选择你想要的元素。
    • 试过了,但它对我不起作用,我仍然没有得到所有支持者的名字(你必须向下滚动窗口才能加载更多),这是代码无法做到的
    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 2018-02-08
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多