【发布时间】:2021-12-17 23:28:09
【问题描述】:
您好,我在 Mac 上使用 Firefox。我尝试在 python 上使用 selenium 来单击标签中前 3 张图片的点赞按钮。但是,代码一直在检查点赞按钮是否被点击时出错,并且点赞按钮被其他项目挡住了。
我有错误
- ElementClickInterceptedException:元素在点 (311,460) 处不可点击,因为另一个元素遮住了它
- AttributeError: 'WebDriver' 对象没有属性 'findElement'
下面是代码。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.relative_locator import locate_with
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.keys import Keys
import time
sleeptime = 10
#login function for account etc
def login(browser):
browser.maximize_window()
browser.get("https://www.instagram.com")
time.sleep(sleeptime)
username = browser.find_element(By.NAME,"username")
password = browser.find_element(By.NAME,"password")
#grab all the button (take care if button change position, currently login is at the first) [0] is the first button
login = browser.find_element(locate_with(By.TAG_NAME, "button").below(password))
#input the username and password
username.send_keys("Hkk_james38")
password.send_keys("myfmox-tidgab-xotNo0")
login.click()
#to hold the browser to prevent it close itselfs
time.sleep(sleeptime)
def Visit_Tag(driver, url):
sleeptime = 6
driver.get(url)
time.sleep(sleeptime)
#select all the pictures and save in the list
pictures = driver.find_elements_by_css_selector("div[class = '_9AhH0']")
print(pictures)
image_count = 0
#click the like in each picture by loop
for picture in pictures:
if image_count > 3:
break
picture.click()
time.sleep(sleeptime)
#click the like button, cehck if the like button is click or not
if driver.find_elements(By.XPATH,"//article//section//button//*[@aria-label='Unlike']").size() > 0:
like = driver.find_element(By.XPATH,"//article//section//button//*[@aria-label='Like']")
like.click()
#close the tag
close = driver.find_element(By.XPATH,"//article//section//button//*[@aria-label='Close']")
close.click()
image_count += 1
#main function to execute
def main():
#find webdriver location for firefox
service = Service('/usr/local/bin/geckodriver')
browser = webdriver.Firefox(service = service)
login(browser)
#tag for the pages u will follow and interested in
tags = {
"programming",
}
websites = []
for tag in tags:
Visit_Tag(browser, f"https://www.instagram.com/explore/tags/{tag}")
main()
【问题讨论】:
标签: python-3.x selenium-webdriver selenium-firefoxdriver