当前位置: 首页 > news >正文

学习selenium+python使用 XPath 表达式来实现找到目标元素时智能封装等待,执行测试代码启动Chrome浏览器后,地址栏只显示data;

背景

  1. 学习使用 XPath 表达式来实现找到目标元素时智能封装等待
  2. 执行测试代码启动Chrome浏览器后,地址栏只显示data;
    在这里插入图片描述

代码如下

import unittest
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.wait import WebDriverWait
from HTMLTestRunner_cn import HTMLTestRunnerclass MyTest(unittest.TestCase):def setUp(self) -> None:chrome_option = webdriver.ChromeOptions()chrome_option.add_argument('--disable-gpu')self.driver = webdriver.Chrome(options=chrome_option)self.imgs = []  # 初始化存放测试截图的列表self.url = 'http://localhost:8080'def tearDown(self) -> None:try:self.driver.quit()except NoSuchElementException as e:print('tearDown Error details: {}'.format(e.args[0]))def find_element(self, locator):try:element = WebDriverWait(self.driver, 30).until(lambda x: x.find_element(*locator))return elementexcept NoSuchElementException as e:print('Error details: {}'.format(e.args[0]))raisedef test1(self):self.find_element(('id', 'username')).send_keys('admin')self.find_element(('id', 'password')).send_keys('admin')self.find_element(('xpath', '//input[@value="Login"]')).click()# 执行截图操作,将当前截图加入到测试报告中self.imgs.append(self.driver.get_screenshot_as_base64())self.find_element(('xpath', '//div[@id="accordion"]//div[contains(@class, "panel-title") and text()="信息查询"]')).click()self.imgs.append(self.driver.get_screenshot_as_base64())self.find_element(('partial link text', '查询顾客信息')).click()self.imgs.append(self.driver.get_screenshot_as_base64())if __name__ == '__main__':test1 = unittest.defaultTestLoader.loadTestsFromTestCase(MyTest)suite = unittest.TestSuite(test1)# unittest.TextTestRunner().run(suite)runner = HTMLTestRunner(title='带截图的测试报告',description='xxx软件测试报告v0.1',stream=open('reports/sample_test_report.html', 'wb'),verbosity=2)runner.run(suite)

解决过程

  1. 看了好久找到了替代启动浏览器的方法:换成self.driver.get('http://localhost:8080')就好了
  2. 然后开始琢磨两者的区别:
    • 使用 self.driver.get('http://localhost:8080') 时,driver 是一个 WebDriver 对象,通过调用 get() 方法并传入网址参数来打开浏览器,并加载对应的网页。
    • 而当使用 self.url = 'http://localhost:8080' 时,你只是将网址赋值给了 self.url 这个实例变量,但并没有使用它来打开浏览器。所以在后续的代码中,浏览器仍然会使用默认的网址或者之前通过 driver.get() 方法设置的网址。
    • 如果希望使用 self.url 来打开浏览器,可以在测试方法 test1() 中,通过 self.driver.get(self.url) 来打开指定的网页。
def test1(self):self.driver.get(self.url)self.find_element(('id', 'username')).send_keys('admin')self.find_element(('id', 'password')).send_keys('admin')self.find_element(('xpath', '//input[@value="Login"]')).click()# 执行截图操作,将当前截图加入到测试报告中self.imgs.append(self.driver.get_screenshot_as_base64())self.find_element(('xpath', '//div[@id="accordion"]//div[contains(@class, "panel-title") and text()="信息查询"]')).click()self.imgs.append(self.driver.get_screenshot_as_base64())self.find_element(('partial link text', '查询顾客信息')).click()self.imgs.append(self.driver.get_screenshot_as_base64())

相关文章:

  • C++ 类构造函数 析构函数
  • 微信小程序canvas画布图片保存到相册官方授权、自定义授权、保存
  • 部署本地GPT
  • IDEA 在本地启动多个 SpringBoot 后端服务模拟集群
  • python 抽象接口和对应关系总结
  • 区间预测 | Matlab实现BiLSTM-Adaboost-ABKDE的集成双向长短期记忆网络自适应带宽核密度估计多变量回归区间预测
  • vtk9.3 配置 visual studio 2019 运行环境 和运行实例详解
  • 低代码-添加按钮组件设计
  • OpenJDK 和 OracleJDK 哪个jdk更好更稳定,正式项目用哪个呢?关注者
  • 三、Qt Creator 使用
  • 什么是池化层?
  • mac上搭建 hadoop 伪集群
  • 序章 熟悉战场篇—了解vue的基本操作
  • Mysql 安装通过mysql installer安装+配置环境+连接可视化工具
  • Ubuntu 22.04 基础环境搭建
  • [译]CSS 居中(Center)方法大合集
  • 【node学习】协程
  • 4. 路由到控制器 - Laravel从零开始教程
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • canvas 高仿 Apple Watch 表盘
  • Codepen 每日精选(2018-3-25)
  • js正则,这点儿就够用了
  • js作用域和this的理解
  • Linux CTF 逆向入门
  • Python_OOP
  • Python十分钟制作属于你自己的个性logo
  • vue-cli3搭建项目
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 诡异!React stopPropagation失灵
  • 普通函数和构造函数的区别
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 网页视频流m3u8/ts视频下载
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # .NET Framework中使用命名管道进行进程间通信
  • (3)(3.5) 遥测无线电区域条例
  • (39)STM32——FLASH闪存
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (译)2019年前端性能优化清单 — 下篇
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Windows2003安全设置/维护
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET 发展历程
  • .NET/C# 使窗口永不获得焦点
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • @ResponseBody
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [<事务专题>]
  • [BT]BUUCTF刷题第4天(3.22)