Python Selenium提交表单后如何获取操作成功或失败的确认文本
问题原因
- 你之前直接调用
find_element方法返回的是Selenium的WebElement对象本身,要获取元素内的文本,必须追加.text属性读取。 - 点击提交按钮后弹窗为动态渲染,你提交后立即查找元素,此时弹窗还未加载完成,会出现读取到空文本、甚至报元素不存在错误的问题。
- 两种场景的提示文本存放位置不同:
- 输入无效时,提示文本存放在
.serialModal__notes下的span标签内,下方的p标签.serialModal__message为空 - 操作成功时,提示文本存放在p标签
.serialModal__message内
- 输入无效时,提示文本存放在
解决代码
首先导入需要的依赖:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By
将提交按钮点击后的代码替换为如下内容:
submit.click() # 显式等待弹窗加载可见,最长等待10秒 wait = WebDriverWait(browser, 10) modal = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "serialModal"))) # 优先读取p标签的成功提示,为空就读取上方的失败提示 success_msg = modal.find_element(By.CLASS_NAME, "serialModal__message").text.strip() if success_msg: result_text = success_msg else: result_text = modal.find_element(By.CSS_SELECTOR, ".serialModal__notes span").text.strip() print(result_text)
补充说明
如果你使用的是Selenium 3.x旧版本,也可以把find_element(By.xxx, 定位符)的写法替换为你原代码里的find_element_by_xxx写法,逻辑保持一致即可。显式等待会自动判断元素加载状态,比固定time.sleep的执行效率更高,不会出现不必要的等待时间。
内容的提问来源于stack exchange,提问作者Wing
相关产品推荐
相关产品推荐

