Selenium如何检测指定文字是否存在?检测到submit即关闭窗口
Selenium 页面指定文字检测+触发关窗实现方案
前置准备
先安装依赖包,命令行执行:pip install selenium
注:4.0以上版本的Selenium自带驱动自动管理功能,不需要手动下载对应浏览器的驱动文件,初始化浏览器时会自动匹配版本。
两种检测逻辑可选
根据你的检测范围需求选对应的实现即可:
- 可见文本检测:仅识别用户在页面上肉眼可见的文字,会自动忽略隐藏元素、标签属性里的无关字符,是大部分场景下的首选
- 全源码检测:扫描整个页面的HTML源码,包括隐藏元素、标签属性、注释里的文字,检测范围最全,适合需要全量匹配的场景
可直接运行的代码示例
以下是可见文本检测的实现,检测到页面存在submit字样(不区分大小写)就自动关闭当前窗口:
from selenium import webdriver from selenium.webdriver.common.by import By import time # 初始化Chrome浏览器实例 driver = webdriver.Chrome() # 替换为你需要访问的目标页面URL driver.get("https://替换成你的目标页面地址") try: # 循环检测,可根据需求调整检测间隔 while True: # 提取body标签下所有可见文本,统一转小写避免大小写漏判 page_text = driver.find_element(By.TAG_NAME, "body").text.lower() if "submit" in page_text: print("检测到目标关键词submit,执行关窗操作") # 关闭当前标签页,如需直接退出整个浏览器可替换为 driver.quit() driver.close() break # 检测间隔设为0.5秒,平衡响应速度和资源占用 time.sleep(0.5) except Exception: # 窗口提前关闭等异常场景下直接退出浏览器进程,避免残留后台进程 driver.quit()
如果需要用全源码检测,只需要把判断逻辑替换成下面的代码即可:
if "submit" in driver.page_source.lower(): print("检测到目标关键词submit,执行关窗操作") driver.close() break
新手注意事项
- 关键词判断前一定要统一做大小写转换,不然会漏掉
Submit、SUBMIT这类大小写变体,导致检测失效 - 循环检测必须加间隔休眠,不要写无sleep的死循环,否则会占用过高CPU资源,0.3-1秒的间隔完全能满足实时性要求
- 两个关窗方法的区别:
driver.close()仅关闭当前操作的标签页,浏览器其他标签页会保留;driver.quit()会直接退出整个浏览器,终止所有WebDriver会话,根据实际需求选择即可 - 针对动态渲染的单页应用、点击后才加载内容的页面,这套循环检测逻辑同样生效,不需要额外写显式等待,新内容渲染完成后下一次循环就能检测到
内容的提问来源于stack exchange,提问作者ZzaP NeeR
相关产品推荐
相关产品推荐

