为什么Selenium给我NoSuchElementException错误

时间:2020-04-24 07:13:14

标签: python-3.x selenium web-scraping

我有这段代码:

path_web = "D:/chromedriver.exe"

insta = webdriver.Chrome(path_web)

insta.get("https://www.instagram.com/")

wait = WebDriverWait(insta, 20)

insta.find_element(By.TAG_NAME, "input")

运行此命令时,出现NoSuchElementException错误。但是当我尝试使用cmd执行此操作时使用相同的代码。我没有得到错误。我很容易获得元素。我在这里做错什么了?为什么此代码仅在cmd上有效?

1 个答案:

答案 0 :(得分:1)

您没有正确使用显式等待。 这是工作代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC


insta = webdriver.Chrome()
insta.get("https://www.instagram.com")

WebDriverWait(insta, 20).until(EC.element_to_be_clickable(
    (By.TAG_NAME, "input")))

PS:仅供参考,页面上有2个输入。您需要以其他方式找到它们:

...
inputs = WebDriverWait(insta, 20).until(EC.visibility_of_all_elements_located(
    (By.TAG_NAME, "input")))
print(inputs[0])  # Username input.
print(inputs[1])  # Password input.

希望对您有帮助!