SelectTableData() ActiveSheet.ListObjects("myTable").DataBodyRange.Select End Sub 从表中单个单元格获取值 下面的代码获取表中第2行第 Sub GetValueFromTable() MsgBox ActiveSheet.ListObjects("myTable").DataBodyRange(2, 4).Value End Sub Sub SelectAnEntireColumn() '基于位置选取列 ActiveSheet.ListObjects("myTable").ListColumns(2).Range.Select
前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe 不懂如何加载配置文件的,看这篇Selenium2+python自动化18-加载Firefox配置 ? iframe,所以需要先切换 (关于iframe不懂的可以看前面这篇:Selenium2+python自动化14-iframe) ? python自动化23-富文本" editbody = u"这里是发帖的正文" driver.find_element_by_id("Editor_Edit_txbTitle").send_keys(edittile ) body = "这里是通过js发的正文内容" # js处理iframe问题(js代码太长了,我分成两行了) js = 'document.getElementById("Editor_Edit_EditorBody_ifr
前言 在打开页面上链接的时候,经常会弹出另外一个窗口(多窗口情况前面这篇有讲解:Selenium2+python自动化13-多窗口、句柄(handle)),这样在多个窗口之间来回切换比较复杂,那么有没有办法让新打开的链接在一个窗口打开呢 2.为了验证这个问题,可以切换到html编辑界面,手动去掉“_blank”属性 ? 3.删除“_blank”属性后,重新打开链接,这时候会发现打开的新链接会在原标签页打开。 ? 四、js去掉target="_blank"属性 1.第一步为了先登录,我这里加载配置文件免登录了(不会的看这篇:Selenium2+python自动化18-加载Firefox配置) 2.这里用到js的定位方法
基本思路:先用js去掉readonly属性,然后直接输入日期文本内容 一、日历控件 1.打开12306的车票查询界面,在出发日期输入框无法直接输入时间 2.常规思路是点开日历控件弹出框, 2.点左下角firebug的“编辑按钮”,找到对应元素,直接删除readonly="readonly",然后回车。 2.出发日元素id为:train_date,对应js代码为:'document.getElementById("train_date").removeAttribute("readonly");' ? 2.这里输入日期后,会自动弹出日历控件,随便点下其它位置就好了,接下来会用js方法传入日期,就不会弹啦! ?
设置文本框的背景颜色样式 .solid() .fore_color.rgb 设置边框样式 .color .width 与word中使用相似的样式 序号 样式 描述 1 .add_run() 添加新的文字块 2 段落行间距 4 .runs 段落内的文字块 5 .space_after 段后间距 6 .space_before 段前间距 设置字体样式 序号 样式 描述 1 .font.name 字体名称 2 .font.bold 是否加粗 3 .font.italic 是否斜体 4 .font.color 字体颜色 5 .font.size 字体大小 PDF自动化处理 pypdf2模块 可以读取、写入、 PDF文件 非Python标准模块,需要单独安装 pdfplumber模块 可以更好地读取PDF文件内容 可以提取PDF中的表格 非Python标准模块,需要单独安装 pip install pypdf2 .write() 加密PDF文件 pdf_write.encrypt(密码) 解密PDF文件 pdf_reader.decrypt(密码) 邮件自动化处理
三、异常的传递3.1概念:异常的传递——当函数/方法执行出现异常,会即将异常 传递给函数/方法的调用一方,如果传递到主程序仍然没有异常处理,程序才会被终止。 之后并没有在demo2函数内部处理异常,既然没有处理异常就会把这个异常继续向上传递,传递给代码的第九行,第九行是在主程序中调用demo2这个函数。 这个就是异常一级一级传递的过程,如果某个函数出现了异常,会把这个异常向上传递,传递给这个函数的调用一方,一直传递到主程序之后如果发现异常没有被处理程序才会被终止。 示例:需求:提示用户输入密码,如果长度少于8,抛出异常注意:当前函数只负责提示用户输入密码,如果密码长度不正确,需要其他函数进行额外处理。因此可以抛出异常,由其他需要处理的函数捕获异常。 分享网站:《Python自学网》 基础入门到逐步深入 | 适合新手入门到精通 | 体系课程:Web开发、爬虫、图形界面化、自动化(运维、测试)、云计算
os模块 Python标准库 和操作系统有关的操作 创建、移动、复制文件和文件夹 文件路径和名称处理 路径的操作 获取当前Python程序运行路径 不同操作系统之间路径的表示方式 windows中采用反斜杠 seq]匹配任何不在seq中的字符 查询文件信息 .stat() 序号 属性 含义 1 st_size 文件体积大小(单位:bytes) 2 st_atime 文件的最近访问时间 3 st_mtime os.rename(a,b) 读取压缩包zip内文件 zipfile.ZipFile() .namelist() 读取压缩包内文件信息 .getinfo() 处理 Excel文件 openpyxl模块 可以读取和写入Excel文件 第三方模块,需要单独安装 处理Excel数据 处理Excel样式 在表格内插入图表 在线安装方式 Windows 用户: pip idx=数字编号,amount=要插入的列数) 插入一行 .insert_rows(idx=数字编号) 插入多行 .insert_rows(idx=数字编号,amount=要插入的行数) Word自动化处理
2.页面源码如下:(老规矩:copy下来,用文本保存下来,后缀改成.html,用浏览器打开) <!DOCTYPE html> <meta charset="UTF-8"> <!
2. Lily - Frank address: province: BeiJing region: chaoyang city: BeiJing Yaml文件内容—示例2: 2). 键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔 例如: family 对象中的 key 为 name 与其对应的 value 值 Smile_Family 之间是使用空格分隔的。 Python 会被转义,也就是到最后是原样输出; 双引号不会被 Python 转义,到最后是输出了特殊字符; Yaml文件内容如下: str0: hi str1: "Hello World" str2: "Hello\nWorld" Python输出: {'str': 'hi', 'str1': 'Hello World', 'str2': 'Hello\nWorld'} 6.
背景 在日常的测试工作中,经常会遇到和远程的服务器进行交互的情况,例如,小编这次就遇到了需要处理远程k8s上的日志文件的情况。 如果每次都需要打开k8s的界面,在命令行里面执行,操作就会变得非常的繁琐,也不太方便,于是就来探索一个比较方便的途径,能够自动化的获取文件到本地,来方便的在本地自动化处理。 准备工作 1. ps //列出正在运行的容器 docker images //列出镜像 docker cp ${Name}:/container_path local_path //从容器目录拷贝文件到本地目录 2. 具体实现结果 完成了前面的准备工作之后,便可以编写自己的自动化处理脚本,方便的将远端的文件拉取到本地进行自动化处理,从而获取自己需要的信息。下面是小编的处理结果情况: ? 之后便可以丢到本地随意处理了。
时间序列处理2 在前面一个章节,我们学习了常用的时间序列的生成方法,这一节,则是非常方便的如何使用xarray进行数据集的时间维度的抽取合并操作。 例如我想提取前15个元素值: ds.time[0:15] 我想提取前30个元素,但每两月取一次值: ds.time[0:30:2] 上面1948-01后面直接是1948-03,2月被跳过了。 loc取值法可以说才是xarray对时间序列取值的神,通过简单了解,你就可以飞速处理时间序列。 若判定为2号,则全部不符合要求,全部返回False,数据全部舍弃,返回一个空数组。 如何对数据进行操作 上面对时间序列的处理,都是讲明原理,仅仅对时间序列进行操作,下面我们将对air进行相关操作。
集合 创建集合可以用set(),或者直接用{} set_a = set([1,2,3,4,5]) set_b = {1,3,5,7,9} print(set_a) print(set_b) print( 别的到用的时候再去查吧 set_a = set([1,2,3,4,5]) set_b = {1,3,5,7,9} print(set_a | set_b) # 并集 print(set_a & set_b # discard允许尝试删除不存在的元素,但是remove会报错 #setb.discard(2) print(set_b) 文件的操作 open()打开文件。 这个方法是一次读一行,让后操作,然后再处理下一行。这是一个高效的方法。 如果是使用一次读取整个文件到内存,然后再进行处理的实现方法(比如readlines()),在处理大文件的时候效率会低很多。 不过这个方法处理的时候数据就不是列表了,要获取行号,只能在for循环开始的时候加一个计数器,然后每一次都自增1,这样来记录行号 file = open('test.txt',encoding='utf-
和富文本一致,日期控件也是我们经常可常见的控件之一,而且大多数的日期控件都是readonly属性,需要人为的手动去选择对应的时间,很显然,在手工测试中,这是一个很简单,很容易做到的操作,在自动化中 结束时间>开始时间" value="" class="text-box hasDatepicker"name="act_stop_time" id="dp1439183415477"> 对日期控件的处理思路一般为 : 1、取消日期控件的readonly属性 2、给value赋值 3、写js代码来实现如上的1,2点,再webdriver对js进行处理 利用如上的三点思路,时间的js代码为: startJs=js1=
上次分享了一个python处理word的内容,链接参看: Python自动化办公-处理word文档,这次分享python处理excel的方法 Excel简介 先来简单了解一下Excel,方便我们后期操作 sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。 openpyxl.Workbook() wb.save('test.xlsx') wb.close() 打开一个现有的Excel: #方法1 wb = openpyxl.open('test.xlsx') #方法2 wb2 = openpyxl.load_workbook('test.xlsx') 就像数据库一样,多个句柄可以同时存在(wb和wb2可以同时存在)。 代码释义 # 待写入的列表 for i,j in zip(range(起始位置),列表): ws[列名+str(i)] = j #ws.cell(i,第几列,j) 逐行 A = [1,2,3,4,5,6,7,8,9
本文将介绍如何使用Selenium和ChromeDriver来实现自动化处理JavaScript渲染页面,并实现有效的数据抓取。 2、安装Selenium和ChromeDriver 首先,我们需要安装Python的Selenium库和ChromeDriver驱动程序。 4、总结和展望 通过使用Selenium和ChromeDriver,我们可以轻松地实现自动化处理JavaScript渲染页面的功能,有效地进行数据抓取和处理。 这种方法非常适用于需要处理动态加载数据的网站。 希望本文的介绍能够帮助您更好地理解如何使用Selenium和ChromeDriver来自动化处理JavaScript渲染页面,并进行相应的数据抓取和解析。
于是想到了批处理命令,大家可以创建txt文件,然后编辑命令后将文件后缀改成bat,然后双击运行即可完成批量删除操作。下面给大家讲解一下我查到和实验的结果。 问题描述 使用bat文件批处理删除某几个文件、文件夹 问题解决 删除文件 del /s /q /s 路径 删除目录 rd /s /q 路径 注:/s ---> 删除文件夹下所有文件 /q
前言 在appium自动化测试过程中部分设备会存在各种状况影响自动化脚本的执行。 如设备锁屏,安装时权限弹窗处理等等(oppo和vivo设备安装app时需要进行弹窗确认,还需要输入密码) 那么该如何处理这些设备的的状态来保证自动化运行的成功率? 最后我们定义一个方法install_action()使用多线程把上面2个方法加载进来 import threading def install_action(app_path): ''' (target=install_dialog_handle, args=() threads.append(p2) #执行安装操作 for p in threads: 自动化47-app权限弹窗问题 输入法切换 自动化测试过程中经常会把系统默认输入法切换为appium输入法,但是运行完脚本之后我们需要把输入法切换为系统的默认输入法(appium输入法没有界面,不切换我们无法正常输入
年底项目投标,需要整理大量的内容,标书的很多内容是其实是之前的标书重复的,可以把对应的各个部分内容合并,然后再处理格式等。 border.LineStyle = constants.wdLineStyleSingle border.LineWidth = constants.wdLineWidth225pt #添加标题2 parag_range.Text +='\n' parag = doc.Paragraphs.Add() parag_range = parag.Range parag_range.Text ='标题2' parag_range.Style = doc.Styles("Heading 2")#二级标题 ##添加正文 parag_range.Text +='\n' parag = doc.Paragraphs.Add border.LineStyle = constants.wdLineStyleSingle border.LineWidth = constants.wdLineWidth225pt #添加标题2
1 Frame的处理 在自动化中,如果一个元素定位不到,那么最大可能是在iframe中,我们先了解frame。 1.1 处理未嵌套的frame frame存在二种,一种是嵌套的,一种是未嵌套的,本小节部分,主要介绍,frame没嵌套的时候,在frame中的对象的处理。见如下的案例图: ? ">不会说话的主人 <a href="10-20(<em>2</em>) <br> </body> </html> 10-20(<em>2</em>).html的源码为: <html> <head> <title>内容页面</title> </head> <body> <center <em>自动化</em>的测试中,iframe的嵌套也是很常见的,对于嵌套的iframe,我们<em>处理</em>的方式是先进入到iframe的父节点,再进入到子节点,然后可以对子节点里面的对象进行<em>处理</em>和操作。
python自动化测试(2) 自动化基本技术原理 1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据。 PS: 本文已经收入合集:《基于python的互联网软件测试开发(自动化测试)-全集合》,欢迎访问的查看: 基于Python的互联网软件测试开发 2 应用软件逻辑结构 数据库应用系统 可能是最典型的网络应用程序了 从更广泛的角度来看一个计算机系统,它给人的体验上本质上是做了如下的处理: ? 人的所有的直观体验都是来自于对模拟量(物理量)的体验,人的交互输入也是来自于模拟量的输入。 人敲击键盘向计算机系统输入文字,键盘将不同一键位产生的脉冲电流传入计算机系统,计算机系统通过芯片和驱动,将这些电流信号转化成数字信号,然后交付数字芯片处理。这样人就完成了 信息的输入 。 以上的例子可以简化为:力学物理量产生电学物理量进行输入,计算机数字系统处理后,光学物理量进行输出。