【问题标题】:Selenium Webdriver doesnt find ALL elements on websiteSelenium Webdriver 在网站上找不到所有元素
【发布时间】:2018-02-16 19:03:53
【问题描述】:

我一直在开发一款 Instagram 自动化程序,但有一个问题: 当我尝试找到所有 LIKE 按钮并打印它们时

它只喜欢前4张图片,但还有很多,我不知道为什么它找不到它们

使用 Selenium、Python、Selenium Webdriver、时间、密钥(来自 selenium) 代码:

hearts = browser.find_elements_by_xpath("//*[contains(@class, '_eszkz
_l9yih')]")

for i, heart in enumerate(hearts):
    print('{}/{}'.format(i, len(hearts)))
    heart.click()
    time.sleep(2)

【问题讨论】:

  • 相关HTML请。
  • 什么 HTML ???
  • 与问题相关的 HTML...如果看不到 HTML,我们如何检查您的定位器?
  • 转到 istagram,登录并转到您的新闻提要 -> 这就是 HTML

标签: python selenium selenium-webdriver automation instagram


【解决方案1】:

这只是由于 instagram 加载页面项目的方式

Instagram 一次只加载 4 张图片

需要向下滚动页面才能加载更多内容

hearts = driver.find_elements_by_xpath("//*[contains(@class, '_eszkz _l9yih')]")

while True: #infinite loop
    q = len(hearts)
    last_item = hearts[q-1]
    for i, heart in enumerate(hearts):
        print('{}/{}'.format(i, len(hearts)))
    #heart.click()
    sleep(2)
    last_item.location_once_scrolled_into_view
    hearts = driver.find_elements_by_xpath("//*[contains(@class, '_eszkz _l9yih')]")

获取最后一个项目列表,并滚动到它并重新加载列表

Here the full code

【讨论】:

  • 但我包含了一个代码,它可以加载更多图片,而这个 while True 循环对我不起作用
  • 这只是一个例子
  • @BoratTV 我的回答是解释为什么你只得到 4 张图片以及加载更多图片的方法......你需要根据你的目的调整它
猜你喜欢
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2016-09-07
相关资源
最近更新 更多