我有这段代码:
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上有效?
答案 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.
希望对您有帮助!