如何避免解决这个异常?

问题描述 投票:1回答:1
for a in range(0,500):
    driver.get("https://www.vype.com/vype-dfw-fan-poll-girls-track-runner-of-the-year")
    driver.implicitly_wait(30)
    vote = driver.find_element_by_xpath("//span[@class='css-answer-span pds-answer-span'] 
    [contains(.,'Dymond Wiley, Duncanville')]")
    vote.click()
    button=driver.find_element_by_xpath("//a[contains(@id,'pd-vote-button10551469')]")
    button.click()
    time.sleep(3)
    print("vote "+str(a))

有时会卡在第三个或第四个循环中,错误信息是。

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class="css-answer-span pds-answer-span">...</span> is not clickable at point (603, 7). Other element would receive the click: <span id="pds-answer10551469">...</span>
python selenium browser automation
1个回答
0
投票

你可以诱导java脚本执行器点击元素。

driver.execute_script("arguments[0].click();", vote)

诱导 WebDriverWait()并等待 element_to_be_clickable()这样可以减少你的时间。

for a in range(0,500):
    driver.get("https://www.vype.com/vype-dfw-fan-poll-girls-track-runner-of-the-year")
    vote=WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='css-answer-span pds-answer-span'][contains(.,'Dymond Wiley, Duncanville')]")))
    driver.execute_script("arguments[0].click();", vote)
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//a[contains(@id,'pd-vote-button')]"))).click()
    print("vote "+str(a))

导入以下库。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
© www.soinside.com 2019 - 2024. All rights reserved.