代码之家  ›  专栏  ›  技术社区  ›  Patriots299

python/selenium:识别所有instagram心脏并“喜欢”

  •  0
  • Patriots299  · 技术社区  · 6 年前

    程序应该检测instagram中的所有心脏,然后给出一个“like”。我知道有一个InstagramAPI,但是我试图用Selenium来实现教育目的。另外,我正在使用Chrome。

    这就是我目前所尝试的:

    # scroll down to the bottom of the page
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    
    driver.maximize_window()
    
    # find all heart links
    hearts = driver.find_elements_by_xpath("//button[@class='dCJp8 afkep coreSpriteHeartOpen _0mzm-']")
    
    for i in range(len(hearts)):
        hearts[i].click()
        sleep(3)
    

    错误:

    selenium.common.exceptions.WebDriverException: Message: unknown error: Element <button class="dCJp8 afkep coreSpriteHeartOpen _0mzm-">...</button> is not clickable at point (192, 20). Other element would receive the click: <div class="                  Igw0E   rBNOH        eGOV_     ybXk5    _4EzTm                                                                                                              ">...</div>
      (Session info: chrome=71.0.3578.98)
    

    从我所能理解的来看,我的程序所指向的元素似乎不正确。这就是我正在使用的:

    enter image description here

    我还尝试了上跨和子跨元素。有没有人知道可能出什么事了?提前谢谢。

    编辑: 已使用actionChain()解决。在尝试单击该元素之前,我先添加了移动到该元素的代码。

    hearts = driver.find_elements_by_xpath("//span[@class='fr66n']")
    
    for h in range(len(hearts)):
        ActionChains(driver).move_to_element(hearts[h]).click(hearts[h]).perform()
        print(hearts[h])
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   SwordW    6 年前

    我不太确定。我的猜测是你试图点击的元素不在屏幕上。尝试先滚动到元素,然后单击。