【发布时间】:2018-12-14 18:55:30
【问题描述】:
我正在编写一个在 instagram 照片上设置喜欢的脚本,但是在一些喜欢后(一次 14、一次 50、一次 64),shell 给了我这个错误:
in <module> ui.WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".dCJp8.afkep.coreSpriteHeartOpen._0mzm-"))).click() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until raise TimeoutException(message, screen, stacktrace) TimeoutException: Message:
我知道问题应该在 webdriver 等待,但我不知道如何改进我的脚本。
这是我的脚本:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import ui
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome(executable_path = '/usr/local/bin/chromedriver')
driver.implicitly_wait(30)
driver.get("https://www.instagram.com/accounts/login/?source=auth_switcher")
#log in
time.sleep(1)
usm = driver.find_element_by_name('username').send_keys("givcomomvrvglino")
pwd = driver.find_element_by_name('password').send_keys("x")
btnLog = driver.find_element_by_tag_name('form').submit()
#disattiva le notifiche
ui.WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".aOOlW.HoLwm"))).click()
tag = "likeforfollow"
url_to_search = "https://www.instagram.com/explore/tags/" + tag + "/"
driver.get(url_to_search)
contatore = 0
for i in range(500):
if i == 0:
ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".v1Nh3.kIKUG._bz0w"))).click()
ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".dCJp8.afkep.coreSpriteHeartOpen._0mzm-"))).click()
ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".HBoOv.coreSpriteRightPaginationArrow"))).click()
else:
ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".dCJp8.afkep.coreSpriteHeartOpen._0mzm-"))).click()
ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".HBoOv.coreSpriteRightPaginationArrow"))).click()
contatore = contatore + 1
print(contatore)
time.sleep(3)
【问题讨论】:
-
您是否尝试增加等待时间?指定值以秒为单位,条件(默认)每 0.5 秒轮询一次。
-
我是 Selenium 新手,我不知道该怎么做
-
在
ui.WebDriverWait(driver, 20)中,“20”是以秒为单位的等待时间。 -
我试过了,还是一样
标签: python reactjs selenium selenium-webdriver instagram