如何用Selenium Python查找含特定文本兄弟元素的DIV并打印内容?
问题解决:通过兄弟元素筛选提取div文本
你的代码没响应的核心问题是XPATH表达式语法错误,同时节点关系判断有误。结合页面元素结构,修正方案如下:
错误分析
原XPATH //div[contains(@class,'ahoy-value')] and following-sibling::div[contains(text(),'Accountmanager')] 不符合XP语法规则,正确逻辑应该是先定位到包含"Accountmanager"的文本节点,再获取它对应的兄弟值节点。
修正后的代码
# 初始化变量为None更合理 accountmanager = None def send_keys_in_loop_dropaccountmanager(locator): global accountmanager for i in range(5): try: # 等待元素可见并获取文本,用visibility_of_element_located比clickable更适合提取文本场景 test = wait.until(EC.visibility_of_element_located(locator)).text print(test) accountmanager = test break except Exception as e: # 打印异常方便排查问题 print(f"第{i+1}次尝试失败: {e}") continue # 修正XPATH:先定位文本为Accountmanager的div,再取它的前一个兄弟节点(对应值的div) send_keys_in_loop_dropaccountmanager((By.XPATH, "//div[contains(text(),'Accountmanager')]/preceding-sibling::div[contains(@class,'ahoy-value')]")) print("accountmanager:", accountmanager)
关键说明
- XPATH修正:根据页面元素结构,"Accountmanager"是标签文本,对应的值在它的前一个兄弟节点(
preceding-sibling);如果实际结构是值在标签之后,替换为following-sibling即可 - 等待条件优化:仅提取文本时,
visibility_of_element_located比element_to_be_clickable更合适,避免不必要的可点击校验 - 异常处理调整:捕获具体异常并打印,便于排查每次尝试失败的原因
内容的提问来源于stack exchange,提问作者Marnix Bolier
相关产品推荐
相关产品推荐

