Python Selenium基于span/strong文本的条件判断问题求助
Selenium元素文本判断:选visibility_of_element_located还是text_to_be_present_in_element?
问题根源
你用visibility_of_element_located出错的原因很直接:这个条件只验证元素是否可见,完全不检查文本内容。不管元素显示的是提交成功还是标题重复的提示,只要这个<strong>元素出现在页面上且可见,它就会返回True,这就是误判的原因。而超时异常则是因为你可能在等待某个文本对应的状态,但实际页面显示的是另一种文本,导致等待超时。
正确选择:text_to_be_present_in_element
text_to_be_present_in_element是专门为这种场景设计的——它会等待指定元素中出现目标文本,完美匹配你需要判断两种不同提示的需求。
代码示例
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException # 定义元素定位器 strong_element_locator = (By.XPATH, "/html/body/div[2]/div[4]/form/div[10]/span/strong") wait = WebDriverWait(driver, 10) # 10秒超时时间可根据页面调整 # 判断提交成功的情况 try: wait.until(EC.text_to_be_present_in_element(strong_element_locator, "Your video has submitted successfully")) print("视频提交成功") except TimeoutException: # 超时则检查是否是标题重复提示 try: wait.until(EC.text_to_be_present_in_element(strong_element_locator, "This video title has already been chosen - Please input unique video title")) print("标题重复,请输入唯一视频标题") except TimeoutException: print("指定时间内未出现目标提示文本")
额外注意事项
- 确保你的XPATH定位器是稳定的,避免页面结构变动导致元素定位失败
- 如果页面文本是异步加载的,
text_to_be_present_in_element会自动等待文本渲染完成,比单纯判断元素可见更精准
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

