该程序应该能够检测Instagram中的所有心脏,然后发出“赞”。我知道这里有一个Instagram API,但出于教育目的尝试使用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)
根据我的理解,程序所指向的元素似乎并不正确。这就是我正在使用的:
我也尝试了upper和child span元素。有人对可能出什么问题有其他想法吗?预先感谢。
编辑: 使用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])
答案 0 :(得分:2)
我不太确定。我的猜测是您要单击的元素不在屏幕上。尝试先滚动到该元素,然后单击。
答案 1 :(得分:0)
这应该有效:
likeButtonPath= 'section.ltpMr.Slqrh > span.fr66n > button > div > span > svg[aria-label="Like"]'
elements= LOGINPG.find_elements_by_css_selector(likeButtonPath)
for element in elements:
LOGINPG.execute_script('arguments[0].scrollIntoView({behavior: "smooth", block: "center", inline: "nearest"});', element)
element.click()