Selenium遇到Exception自动截图

随手小记

场景:测试百度:

点击新闻,跳转到新的窗口,找到输入框,输入"hello,world"

等到输入框的内容是hello,world, 这里有个错误,少了一个]

后来就实现了错误截图的功能,可以参考

复制代码
//input[@id='ww'"

 WebDriverWait(chrome_driver,10).until(expected_conditions.text_to_be_present_in_element_value((By.XPATH,"//input[@id='ww'"),"hello,world"))

完整代码

复制代码
# 通过xpath定位,By.XPATH
# xpath是一门在xml文档中查找信息的语言
# 为什么使用xpath可以定位htmk
# html文档的结构和标签嵌套遵循XML的基本规则,因此XPath可以有效的用于html文档中定位元素。XPath
# 从而实现定位
# xpath定位html的基本原则是,将html文档视为xml文档,并且使用Xpath表达式来描述元素的位置关系
# 选择特定的元素或者元素集合

# xpath可以通过相对路径和绝对路径去定位元素,绝对路径从html根节点开始算,相对路径从任意节点开始
import time
import os

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions

chrome_driver = webdriver.Chrome()
try:
    # 1.从根节点开始选取:绝对路径
    chrome_driver.get("https://www.baidu.com")
    chrome_driver.maximize_window()
    # 类变量  绝对路径
    # chrome_driver.find_element(By.XPATH,)
    chrome_driver.implicitly_wait(10)
    chrome_driver.find_element(By.XPATH,'/html[1]/body[1]/div[1]/div[1]/div[3]/a[1]').click()
    # 切换窗口
    all_window = chrome_driver.window_handles
    chrome_driver.switch_to.window(all_window[1])
    # driver.findElement(By.xpath("//img[@alt='百度新闻']"))
    WebDriverWait(chrome_driver,10).until(expected_conditions.presence_of_element_located((By.XPATH,"//img[@alt='百度新闻']")))
    assert 'news' in chrome_driver.current_url
    print(chrome_driver.current_url)
    time.sleep(5)

    # 从任意节点开始取,//div 列出所有的div标签
    web_eles = chrome_driver.find_elements(By.XPATH,'//div')
    print(web_eles)
    print(len(web_eles))
    # 这个网站取练手杠杠滴
    # https://iviewui.com/view-ui-plus/component/form/form
    #选取当前父节点是input的下面的a元素
    web_a = chrome_driver.find_elements(By.XPATH,'//div/a')
    print(len(web_a))

    # 根据属性选取
    # 1.使用id属性定位
    chrome_driver.find_element(By.XPATH,"//input[@id='ww']").send_keys("hello,world")
    WebDriverWait(chrome_driver,10).until(expected_conditions.text_to_be_present_in_element_value((By.XPATH,"//input[@id='ww']"),"hello,world"))
    chrome_driver.find_element(By.XPATH,"//input[@id='ww']").clear()
    time.sleep(5)

except Exception as e:
    # 截图存储的文件夹
    screenshot_dir = os.path.join(os.getcwd(), "screenshot")
    # 如果目录不存在,则创建
    if not os.path.exists(screenshot_dir):
        os.makedirs(screenshot_dir)
    # 获取当前截图目录下所有的 PNG 文件
    existing_screenshots = [f for f in os.listdir(screenshot_dir) if f.endswith(".png")]
    # 计算新的截图编号
    new_index = len(existing_screenshots) + 1  # 从1开始累加
    # 生成新的截图路径
    screenshot_path = os.path.join(screenshot_dir, f"{new_index}.png")
    # 发生异常时截图
    chrome_driver.save_screenshot(screenshot_path)
    print(f"操作失败,已截图: {screenshot_path}")
    print(f"错误信息: {e}")

finally:
    # 关闭浏览器
    chrome_driver.quit()

最后的截图

相关推荐
Felven7 小时前
stress-ng 与 fio 性能测试工具使用指南
linux·测试工具·fio·stress-ng
H_unique14 小时前
Chat2Excel:接口自动化测试
python·测试工具·自动化
Sarapines Programmer1 天前
【Wireshark】安装与使用指南
网络·测试工具·wireshark
念越2 天前
接口自动化测试从入门到实战:接口用例设计、Requests、Pytest、YAML、JSON Schema 与 Allure 报告
python·测试工具·自动化·json·pytest
ysu_03143 天前
Postman接口调试实战指南-从HTTP请求到环境变量-Collection与自动化测试
网络·网络协议·测试工具·http·api·postman·可用性测试
ZhangJun954 天前
从零写一个类鲁大师的硬件检测小工具,软件附上,可直接使用
windows·测试工具·电脑·笔记本电脑·硬件架构
测试员周周6 天前
【jev应用到测试】94 条 UI 报错交给 Jev,三档判对 85.1%,开单闸门定在 0.6
人工智能·python·测试工具·单元测试·测试用例
xfilm埃利测量6 天前
从方阻到电阻率:四探针法如何把薄膜“测明白“
功能测试·测试工具·四探针·薄膜电阻测量
禹凕6 天前
机器学习之Selenium(Machina Learning about Selenium)
爬虫·python·selenium·测试工具·机器学习
水水不水啊8 天前
告别杂乱的调试窗口:我用 Python + WebView 写了一个现代化串口助手
python·测试工具·嵌入式·嵌入式开发·串口调试·串口助手