Selenium无法定位元素,即使它已加载并且不在iframe中



我试图在表单中定位一个元素,但由于某种原因,Selenium不断抛出一个错误,说找不到它。这是我正在使用的简单代码。有人能解释为什么这不起作用吗?它看起来像一个基本的HTML表单

driver = uc.Chrome()
driver.get('https://www.stumblechat.com/register')
username = driver.find_element(By.ID, 'user')

这里有两个问题:

  1. 您必须等待元素出现。最好的方法是使用WebDriverWaitexpected_conditions显式等待
  2. 该元素具有不同的定位器。您可能正在查找这个CSS选择器所定位的元素:input[name='username']
    如果是这样,您的代码可以如下所示:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")
webdriver_service = Service('C:webdriverschromedriver.exe')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 10)
url = "https://stumblechat.com/register"
driver.get(url)
username = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='username']")))

最新更新