CSS 定位元素
大部分人在使用 selenium 定位元素时,用的是 xpath 定位,css 定位往往被忽略掉了,其实 css 定位也有它的价值,css 定位更快,语法更简洁。
我们先来看看 css 定位与 xpath 定位的区别在哪?
CSS 与 Xpath 定位的区别 属性定位CSScss 可以通过元素的 id、class、标签这三个常规属性直接定位
css 用 #号表示 id 属性,如:id=’kw’ 可以写成:#kw
css 用. 表示 class 属性,如:class=”s_ipt”可以写成:.s_ipt
css 直接用标签名称,无任何标识符,如:input
Xpathxpath 也可以通过元素的 id、name、class 这些属性定位
用 xpath 通过 id 属性定位driver.find_element(By.XPATH,”//[@id=’kw’]”)
用 xpath 通过 name 属性定位driver.find_element(By.XPATH,”//[@name=’wd’]”)
用 xp ...
Playwright with React
React 组件的属性 data-testiddata-testid 是 React 组件中的一个自定义属性,它通常被用于测试目的。通过设置 data-testid 属性,可以方便地在自动化测试工具(如 Jest、Enzyme 等)中定位元素。
举个例子,在编写一个带有输入框的 React 组件时,我们可以给这个输入框设置一个 data-testid 属性,如下所示:
1<input type="text" data-testid="my-input" />
然后,在测试代码中,我们可以使用 getByTestId 函数来获取这个输入框元素,例如:
1234567import { render } from "@testing-library/react";test("renders an input element", () => { const { getByTestId } = render(<MyComponent /&g ...
Python 路径操作模块 pathlib
Python 路径操作模块 pathlib1 pathlib 简介pathlib 是跨平台的、面向对象的路径操作模块,可适用于不同的操作系统,其操作对象是各种操作系统中使用的路径(包括绝对路径和相对路径),pathlib 有两个主要的类,分别为 PurePath 和 Path。
pathlib 模块主类继承关系图
1)PurePathPurePath 访问实际文件系统的“纯路径”,只负责对路径字符串执行操作。PurePath 有两个子类,即 PurePosixPath 和 PathWindowsPath,前者用于操作 UNIX(包括 Mac OS X)风格的路径,后者用于操作 Windows 风格的路径。
2)PathPath 访问实际文件系统的“真正路径”,Path 对象可用于判断对应的文件是否存在、是否为文件、是否为目录等。有两个子类,即 PosixPath 和 WindowsPath,前者用于操作 UNIX(包括 Mac OS X)风格的路径,后者用于操作 Windows 风格的路径。
3)PurePath 和 Path 的区别Path 是 PurePath 的子类,除了支持 ...
如何优雅编写测试用例
在编写测试用例之前,首先应该根据所在公司、项目组的特点,提前制定好对应的测试用例模板以及用例维护方式,比如:Excel、XMind、TestLink、禅道等。
测试用例的组成通常包含以下内容(具体字段根据业务需要取舍):
用例编号 作为测试用例的唯一标识。编号取值规则可以根据项目名称各中文首字母大写 + 六位数字构成,例如:“蔡坨坨电商项目” 在登录功能子模块的第一条用例编号可取值为 CTTDS_000001。
用例标题 又称之为测试点,用一句话来描述测试用例的关注点,每一条用例对应一个测试目的。
一个好的测试用例应该关注标题的规范性,一般来说如果设计用例标题不规范,别人在使用你的测试用例时,就无法做到清晰明了,就会浪费很多时间在沟通上。
并且需要控制用例的粒度,从测试执行者的角度来说,过细的测试用例会让执行者感到疲惫繁琐,过粗的测试用例又容易导致检查点遗漏。所以测试用例标题一般控制在 30 个字以内。
功能模块 根据项目模块层级关系填写,例如:组织权限。
测试目的 简要的测试目的,例如:账号密码功能校验。
前置条件 用例在执行之前需要满足的一些条件,否则用例无法执行,如测试 ...
Python 开发之序列化与反序列化:pickle、json 模块使用详解
引言 在日常开发中,所有的对象都是存储在内存当中,尤其是像 python 这样的坚持一切接对象的高级程序设计语言,一旦关机,在写在内存中的数据都将不复存在。另一方面,存储在内存够中的对象由于编程语言、网络环境等等因素,很难在网络中进行传输交互。由此,就诞生了一种机制,可以实现内存中的对象与方便持久化在磁盘中或在网络中进行交互的数据格式(str、bites)之间的相互转换。这种机制就叫序列化与反序列化:
序列化:将内存中的不可持久化和传输对象转换为可方便持久化和传输对象的过程。
反序列化:将可持久化和传输对象转换为不可持久化和传输对象的过程。
Python 中提供 pickle 和 json 两个模块来实现序列化与反序列化,pickle 模块和 json 模块 dumps()、dump()、loads()、load()这是个函数,其中 dumps()、dump()用于实现序列化,loads()、load()用于实现反序列化。下面,我们分别对 pickle 和 json 模块进行介绍。
pickle 模块 pickle 模块的 dumps()、dump()、loads()、load( ...
Python 中输出表格的两种方式
前言 本文主要介绍 python 中输出表格的两种方式,即分别使用tabulate 和 prettytable。
tabulate安装、导入123pip install tabulatefrom tabulate import tabulate
从 list 生成表格1234567>>> table = [['First Name', 'Last Name', 'Age'], ['John', 'Smith', 39], ['Mary', 'Jane', 25], ['Jennifer', 'Doe', 28]]>>> print(tabulate(table))---------- --------- ---First Name Last Name AgeJohn Smith 39Mary Jane 25Jen ...
Sed 备忘清单
入门 Sed 用法 语法
1$ sed [options] command [input-file]
带管道
1$ cat report.txt | sed 's/Nick/John/g'
1$ echo '123abc' | sed 's/[0-9]+//g'
选项示例
参数
示例
描述
-i
sed -ibak ‘s/On/Off/‘ php.ini
直接备份和修改输入文件
-E
sed -E ‘s/[0-9]+//g’ input-file
使用扩展正则表达式
-n
sed -n ‘3 p’ config.conf
禁止默认图案空间打印
-f
sed -f script.sed config.conf
执行 sed 脚本文件
-e
sed -e ‘command1’ -e ‘command2’ input-file
执行多个 sed 命令
多个命令12$ echo "hello world" | sed - ...
Xpath 轴,函数,谓语笔记
函数
函数
例子
解释
starts-with
//div[starts-with(@id,”maida”)]
选取 id 值为 maida 开头的 div
contains
//div[contains(@id,”maida”)]
选取 id 值含 maida 的 div
and
//div[starts-with(@id,”maida”) and contains(@id,”hello”)]
选取 id 值为 maida 开头且含有 hello 的 div
text()
1. //p/text() 2. div[contains(text(),”maida”)]
1. 获取 p 的文本内容 2. 选取文本内容含 maida 的 div
string
1. string(.) 2. string(//div/a)
1. 获取当前节点的文本内容组合成的单独字符串 2. 获取 //div/a ...
使用 Xpath 定位元素
什么是 XpathXPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
XPath 定位在爬虫和自动化测试中都比较常用,通过使用路径表达式来选取 XML 文档中的节点或者节点集,熟练掌握 XPath 可以极大提高提取数据的效率。
因为 XPath 解析数据,是基于元素(Element)的树形结构,所以学习 XPath 前,先了解一下 html 的结构及常用标签。
基本标签 1234567891011121314151617 标题:`<h1>、<h2>、<h3>、<h4>、<h5>、<h6>、<title>`段落:<p>链接:<a>图像:<img>样式:<style>列表:` 无序列表 <ul>、有序列表 <ol>、列表项 <li>`块:`<div>、<span>`脚本:<script>注释:<! ...
禁用 vim 的 visual 模式
前言 从 Debian9 开始,为了便于选取文本,VIM 引入了可视 (Visual) 模式。 可以使用以下三种模式:
用 v 命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。
用 V 命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。
用 ctrl-V 进入的块可视化模式(Blockwise visual mode)。可以选择一个矩形内的文本。
个人用不太习惯,此处记录一下如何 disable 这个功能。
方法 通过编辑 vim 配置文件去除默认设置的鼠标模式a。可以编辑全局 /etc/vim/vimrc.local 或者当前用户配置文件~/.vimrc
1234567tee /etc/vim/vimrc.local << EOFsource $(find / -name defaults.vim)let skip_defaults_vim = 1if has('mouse') set mouse-=aendifEOF
此处也记录一下 ...