)
正确示例: driver.find_element(By.ID, "f30") (定位)
2. find_element() 与 find_elements() 的选择
- 当你知道页面上只有一个匹配的元素,或者你只关心第一个匹配的元素时,使用find_element()(单数)。它会直接返回一个WebElement对象。
- 当需要获取所有匹配的元素,或者需要迭代处理多个元素时,使用find_elements()(复数)。它会返回一个WebElement列表。
在大多数需要进行文本输入的场景中,我们通常针对的是特定的单个输入框,因此find_element()是更合适的选择。
3. 优先使用显式等待 (WebDriverWait)
implicitly_wait()(隐式等待)是一个全局设置,它在查找元素时生效,但它并不能保证元素在被找到后立即可交互。更好的做法是使用WebDriverWait(显式等待),它允许你定义特定的条件,例如等待元素可见 (visibility_of_element_located) 或可点击 (element_to_be_clickable)。这能更精确地控制等待行为,避免不必要的延迟或因元素未准备好而导致的异常。
不推荐: driver.implicitly_wait(20) # 全局设置,不保证元素可交互 推荐: from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 等待元素可见(通常在进行交互前需要)
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "f30")))
# 如果需要等待元素可点击(例如按钮),可以使用
# element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "some_button_id"))) 4. send_keys() 前通常无需 click()
对于大多数输入框,在调用send_keys()之前无需显式地调用click()。send_keys()方法本身会尝试将焦点设置到元素上并发送文本。除非页面设计要求必须先点击才能激活输入框,否则click()操作是多余的。
5. submit() 方法的适用场景
submit()方法通常用于提交表单(
|