robotframework + selenium自动化测试常见的问题
1、 插入中文数据提示
FAIL UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 92-107: ordinal not in range(25
DataBaseLibrary插入中文乱码的解决:修改D:\Python27\Lib\site-packages\DatabaseLibrary\connection_manager.py里的connect_to_database函数,self._dbconnection = db_api_2.connect (db=dbName, user=dbUsername, passwd=dbPassword, host=dbHost, port=dbPort, charset=“utf8”),增加charset设定
2、调用MySQL出现问题
ImportError: DLL load failed: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3
安装mysql-pythonMySQL_python-1.2.5-cp27-none-win_amd64.whl,打开cmd窗口,执行pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
3、调用cx_Oracle,报错
ImportError: DLL load failed: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3
解决:RobotFramework在安装cx_Oracle后,如果直接连接Oracle数据库时,会出现“Dll load failed”错误。因为Python在使用cx_Oracle类库访问oracle需要oci接口。当cx_Oracle 找不到需要的oci的dll的时候就会报这个错误。
解决方法可以从oracle的客户端找3个dll文件拷贝到cx_Oracle的安装目录D:\Python25\Lib\site-packages
oraociei11.dll
oraocci11.dll
oci.dll
资源访问路径: http://download.csdn.NET/download/benq0124/7094561
还是报错
ImportError: DLL load failed: %1 \xb2\xbb\xca\xc7\xd3\xd0\xd0\xa7\xb5\xc4 Win32 \xd3\xa6\xd3\xc3\xb3\xcc\xd0\xf2\xa1\xa3
原因:oci.dll的版本一定要和cx_Oracle模块的版本一致,不一定要和实际的Oracle的数据版本一致。
例如:cx_Oracle版本是:10g的,那么oci.dll 也必须是10g的,至于实际连接的数据库版本,只要版本比10g低就可以了,例如9i。
解决:网上找oci.dll 64位相对应版本的,拷贝到cx_Oracle的安装目录D:\Python27\Lib\site-packages
4、用rf运行IEdriver的速度好慢,比如在输入框输入用户名,一秒输入一个字符。你们的是不是这样子的?。如果是chromedriver就很快
解决办法:把IEDriver从64位换成32位
5、Firefox启动不起来,或者是启动了,页面是空白的,URL地址栏是空的
解决办法:可能是Firefox版本过高,碰到此问题请降低Firefox版本,最好是45.0版本以下
6、怎么制定robotframework的日志路径?
解决办法:在run的arguments输入-d D:\Python27\RobotFrameWork\Result
7、robotframework的case跑完后,“Report”和“Log”按钮是灰色的,点击不了
解决办法:启动任务管理器(ctrl+alt+del),IE的进程,找IEDriverServer.exe结束掉,如果是chrome,就找到chromeDriverServer.exe。
8、数据备份
-
通过excel对数据库进行数据备份
通过执行以下语句插入excel数据备份表(针对MySQL)
LOAD DATA LOCAL INFILE “C:/Users/PC/Desktop/t_baike_word_value.csv” 所要插入数据的绝对路径
INTO TABLE
t_baike_word_value
所要插入数据的表CHARACTER SET utf8 设置编码格式
FIELDS TERMINATED BY "\t"
TERMINATED BY “,”
OPTIONALLY ENCLOSED BY ‘"’
ESCAPED BY ‘\’
LINES TERMINATED BY “\r\n”
-
直接对数据库进行操作
MySQL user_center user_center user_center
Oracle p95100 l234123 orcl
9、元素定位
1)元素定位的方法:findElement() 与 findElements()
a、findElement() 该方法返回基于指定查询条件的webElement对象,或抛出不符合条件的异常 eg:driver.findElement(By.id(“userID”));
b、findElements() 该方法返回指定查询条件的WebElement的对象集合,或返回null
2)WebElement对象提供的各种定位元素策略
ID:driver.findElement(By.id())
Name:driver.findElement(By.name())
className:driver.findElement(By.className())
tagName:driver.findElement(By.tagName())
linkText:driver.findElement(By.linkText())
partialLinkText:driver.findElement(By.partialLinkText())
css:driver.findElement(By.cssSelector())
xpath:driver.findElement(By.xpath())
3)webelement类提供了诸多方法
在我们开发脚本过程中如何选择最可靠,效率最高的方法,使用id,name是首选,因为他们在html标签中是唯一的,所以是最可靠的
ID定位:driver.findElement(By.id(“username”))
name定位:driver.findElement(By.name(“username”))
class定位:driver.findElement(By.className(“username”))
多学一招:WebElement类支持查询子类元素,如果页面中存在重复元素,但在不同div中,我们可以先定位到其父元素,然后定位其子元素,方法如下:
WebElement hello = driver.findElement(By.id(“div1”)).findElement(By.lindText(“hello”));
4)使用WebElements定位多个相似的元素
比如页面中存在五个单选按钮,他们有相同的class属性,值为:myRadio,我们想对五个按钮循环操作,我们可以把它们全部取出来放到集合中,然后做循环操作,如下:
List radios = driver.findElements(By.className(“myRadio”));
for(int i = 0;i<radios.size();i++){
radios.get(i).click();
}
其他定位方法与操作id,name类似,这里不再赘述,接下来我着重对css选择器与Xpath描述下
5)WebDriver 的By类中提供了cssSelector()方法,该方法使用有以下几种形式:
a、使用相对路径定位元素
如,我们要定为DOM中的input元素,我们可以这样操作,不考虑其在DOM中的位置,但这样做存在一定弊端,当DOM中存在多个input元素时,该方法总返回DOM中的 第一个元素,这并不是我们所期待的
eg:WebElement username = driver.findElement(By.cssSelector(“input”));
另外,为了使用这种方法更准确的定位元素,我们可以结合该元素的其他属性来实现精确定位的目的
b、结合id来定位,driver.findElement(By.cssSelector(“input#username”)); 在标签与id之间使用#连接,如果对css了解的朋友一看就知道为什么会这样写了,不了解也没关 系,只要记住这种写法就OK了
另外该方法也可简写为driver.findElement(By.cssSelector(“#username”)); 有点儿类似于id选择器
c、使用元素的任何属性来定位元素
driver.findElement(By.cssSelector(“标签名[属性名=‘属性值’]”));
d、匹配部分属性值
^= driver.findElement(By.cssSelector(“标签名[属性名^=‘xxx’]”)); 匹配属性值以xxx开头的元素
=driver.findElement(By.cssSelector("标签名[属性名= driver.findElement(By.cssSelector("标签名[属性名=driver.findElement(By.cssSelector("标签名[属性名=‘xxx’]“)); 匹配属性值以xxx结尾的元素
= driver.findElement(By.cssSelector(“标签名[属性名^=‘xxx’]”)); 匹配属性值包含xxx的元素
6)使用相对+绝对路径方法
这里是我自己定义的方法,方便记忆,的确也是这样来实现的
driver.findElement(By.cssSelector(“div#login>input”)) 该方法中“div#login>input” 首先通过相对路径定位到id为login的div元素,然后查找其子元素input(绝对路径)
7)使用xpath定位元素
相比cssSelector,xpath是我比较常用的一种定位元素的方式,因为它很方便,缺点是,消耗系统性能
a、使用绝对路径定位元素
driver.findElement(By.xpath(“/html/body/div/form/input”))
b、使用相对路径定位元素
driver.findElement(By.xpath(“//input”)) 返回查找到的第一个符合条件的元素
c、使用索引定位元素,索引的初始值为1,注意与数组等区分开
driver.findElement(By.xpath(“//input[2]”)) 返回查找到的第二个符合条件的元素
d、结合属性值来定位元素
driver.findElement(By.xpath(“//input[@id=‘username’]”));
driver.findElement(By.xpath(“//img[@alt=‘flowr’]”));
e、使用逻辑运算符,结合属性值定位元素,and与or
driver.findElement(By.xpath(“//input[@id=‘username’ and @name=‘userID’]”));
f、使用属性名来定位元素
driver.findElement(By.xpath(“//input[@button]”))
g、类似于cssSlector,使用部分属性值匹配元素
starts-with() driver.findElement(By.xpath(“//input[stars-with(@id,‘user’)]”))
ends-with driver.findElement(By.xpath(“//input[ends-with(@id,‘name’)]”))
contains() driver.findElement(By.xpath(“//input[contains(@id,“ernam”)]”))
8)使用任意属性值匹配元素
driver.findElement(By.xpath("//input[@=‘username’]”))
9)使用innerText定位元素
a、使用cssSelector查找innerText定位元素
driver.findElement(By.cssSelector(“span[textContent=‘新闻’]”));
b、使用xpath的text函数
driver.findElement(By.xpath(“//span[contains(text(),‘hello’)]”)) 包含匹配
driver.findElement(By.xpath(“//span[text()=‘新闻’]”)) 绝对匹配
10、jenkins集成执行
1)首先需要申请一台远程测试机;
2)然后在jenkins新建一个节点
3)然后在该节点下面新建测试工程
4)配置项目
命令执行:pybot -i P1 -l log.html -r report.html -o output.xml C:\jenkins\workspace\Sunny_Web
最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】
相关文章:
robotframework + selenium自动化测试常见的问题
1、 插入中文数据提示 FAIL UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 92-107: ordinal not in range(25 DataBaseLibrary插入中文乱码的解决:修改D:\Python27\Lib\site-packages\DatabaseLibrary\connection_manager.py里的co…...
2023春招java面试题及答案
2023春招java面试题及答案总结1.以下Dubbo服务负载均衡策略中,哪一个策略的功能是相同参数的请求总是发到同一个提供者()2.如下代码:请问编译运行的结果是什么?3.给出如下代码:请问编译运行的结果是什么&am…...
QT+OpenGL光照
QTOpenGL光照 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 颜色 现实生活中看到的物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的颜色 太阳光能被看见的白光是多找演的的组合…...
OpenCV-PyQT项目实战(7)项目案例03:鼠标框选
欢迎关注『OpenCV-PyQT项目实战 Youcans』系列,持续更新中 OpenCV-PyQT项目实战(1)安装与环境配置 OpenCV-PyQT项目实战(2)QtDesigner 和 PyUIC 快速入门 OpenCV-PyQT项目实战(3)信号与槽机制 …...
vue2版本《后台管理模式》(上)
后台管理模式项目开发经验总结如下,希望对你们有些帮助: 文章目录一、app 出口位置二 、 index.js 路由配置三、package.json 文件四、 main.js 既然安装插件那就需要引入五、 跨域问题总结首先需要一个完整的v2版本的项目 vue2版本思路:首先…...
C++与C基础重叠部分
Cmake CPP程序开发过程 计算机硬件—>机器语言—>汇编—>cppcpp—>机器(gcc)Make(makefile)—>本地智能批处理翻译机制Cmake—>跨平台生成不同设备上的makefile进行执行 Cpp基础学习 基本知识 基本格式 #include<iostream> using namespace std;…...
神经网络基础部件-卷积层详解
前言 在全连接层构成的多层感知机网络中,我们要通过将图像数据展平成一维向量来送入模型,但这会忽略了每个图像的空间结构信息。理想的策略应该是要利用相近像素之间的相互关联性,将图像数据二维矩阵送给模型中学习。 卷积神经网络(convolu…...
【计算机网络】HTTPS协议原理
文章目录一、认识HTTPS协议二、为什么要发明HTTPS三、HTTP与HTTPS的区别四、常见的加密方式1. 对称加密2. 非对称加密3. 数据摘要4. 数字签名五、HTTPS的原理探究方案1:只使用对称加密方案2:只使用非对称加密方案3:双方都使用非对称加密方案4…...
21岁,华科博士在读,我的赛事Top经验
Datawhale干货 作者:vaew,华中科技大学,博士二年级在读简介笔者vaew,21岁,现为华中科技大学机械科学与工程学院陶波教授课题组博士二年级学生。主要研究方向是基于视触融合的机器人灵巧操作。学业之余的研究兴趣包括图…...
基于ThinkPHP6.0+Vue+uni-app的多商户商城系统好用吗?
likeshop多商户商城系统适用于B2B2C、多商户、商家入驻、平台商城场景。完美契合平台自营联营加盟等多种经营方式使用,系统拥有丰富的营销玩法,强大的分销能力,支持官方旗舰店,商家入驻,平台抽佣商家独立结算ÿ…...
Linux中断
文章目录 前言一、Linux 中断介绍二、中断上文和中断下文三、中断相关函数1 获取中断号相关函数2.申请中断3.释放中断4.中断处理函数四.中断下文之 tasklet1.概念2.Linux 内核中的 tasklet 结构体:3.使用步骤4.相关函数a.初始化 tasklet结构体b.调度 taskletc.杀死 tasklet总结…...
Excel+SQL实战项目 - 餐饮业日销售情况分析仪
目录1、要完成的任务2、认识数据3、SQL数据加工4、excel形成分析仪1、要完成的任务 目标:结合SQL和excel实现餐饮业日销售情况分析仪,如下表: 认识分析仪: 切片器:店面 分为四部分:KPI 、组合图、饼图、数…...
电商导购CPS,京东联盟如何跟单实现用户和订单绑定
前言 大家好,我是小悟 做过自媒体的小伙伴都知道,不管是发图文还是发短视频,直播也好,可以带货。在你的内容里面挂上商品,你自己都不需要囤货,如果用户通过这个商品下单成交了,自媒体平台就会…...
Redis学习【6】之BitMap、HyperLogLog、Geospatial操作命令 (1)
文章目录前言BitMap 操作命令1.1 BitMap 简介1.2 setbit1.3 getbit1.4 bitcount1.5 bitpos[pos:position]1.6 bitop1.7 应用场景二 HyperLogLog 操作命令2.1 HyperLogLog 简介2.2 pfadd2.3 pfcount2.4 pfmerge2.5 应用场景三 Geospatial【地理空间】操作命令3. 1 Geospatial 简…...
JAVA实现心跳检测【长连接】
文章目录1、心跳机制简介2、心跳机制实现方式3、客户端4 、服务端5、代码实现5.1 KeepAlive.java5.2 MyClient.java5.3 MyServer5.4 测试结果1、心跳机制简介 在分布式系统中,分布在不同主机上的节点需要检测其他节点的状态,如服务器节点需要检测从节点…...
python3.9安装和pandas安装踩坑处理
0、先决条件:系统内最好先安装有gcc、libffi-devel等 1、安装包下载 https://www.python.org/downloads/source/ 2、解压安装包并上传到/usr/local/python3.9 3、打开shell cd /usr/local/python3.9要先把python3.9的所有文件复制到/usr/local/python3.9才会成功…...
2023.2.15每日一题——867. 转置矩阵
每日一题题目描述解题核心解法一:二维表示 模拟解法二:一维表示 模拟题目描述 题目链接:867. 转置矩阵 给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵…...
【人脸识别】Partial-FC:让你在一台机器上训练1000万个id人脸数据集成为可能!
论文题目:”Killing Two Birds with One Stone: Efficient and Robust Training of Face Recognition CNNs by Partial FC“ -CVPR 2022 代码地址:https://arxiv.org/pdf/2203.15565.pdf 代码地址:https://github.com/deepinsight/insightfac…...
递归方法读取任意深度的 JSON 对象的键值
有以下json字符串 {"name":"John","age":30,"address":{"city":"New York","state":"NY","zip":"10001","coordinates":{"latitude":40.712776,&q…...
黑马redis学习记录:分布式锁
一、基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行…...
对React-Fiber的理解,它解决了什么问题?
对React-Fiber的理解,它解决了什么问题?Fiber用来解决什么问题?Fiber是什么?Fiber是如何解决问题的?Fiber用来解决什么问题? JavaScript引擎和页面渲染引擎两个线程是互斥的,当其中一个线程执行…...
【Linux】初学Linux你需要掌握这些基本指令(二)
目录 1.man指令 2.cp指令 3.mv指令 4.tree指令 5.echo指令 6.more指令 7.less指令(重要) 8.head与tail指令 9.date指令 显示时间常用参数: 设置时间常用参数: 10.cal指令 11.find & whereis & which指令 …...
Linux中VI/VIM 编辑器
1、概述所有Linux系统都会内置vi文本编辑器vim是vi的升级版,可以主动以字体颜色分辨语法的正确性,代码补完和编译,错误跳转等功能。2、vi和vim的三种模式基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式、命令模式2.1、一…...
PDF怎么转换成Word?两种PDF免费转Word方法推荐
不知道你们有没有发现,我们在网上下载的很多资料都是PDF格式的,尽管PDF文件也可以通过专门的PDF编辑器来编辑,但是PDF文档作为版式文档,编辑起来还是存在很多局限性,所有当我们需要大量编辑修改文档的时候,…...
极兔一面:Dockerfile如何优化?注意:千万不要只说减少层数
说在前面 在40岁老架构师 尼恩的读者交流群(50)中,面试题是一个非常、非常高频的交流话题。 最近,有小伙伴面试极兔时,遇到一个面试题: 如果优化 Dockerfile? 小伙伴没有回答好,只是提到了减少镜像层数。…...
SpringBoot+Vue实现酒店客房管理系统
文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…...
自适应多因素认证:构建不可破解的企业安全防线|身份云研究院
打开本文意味着你理解信息安全的重要性,并且希望获取行业最佳实践来保护你所在组织的信息安全。本文将带你了解多因素认证(MFA:Multi-Factor-Authentication)对于企业信息安全的重要性以及实施方法。 多因素认证(MFA&…...
阶段二8_集合ArrayList_学生管理系统_详细步骤
一.学生管理系统案例 1.需求: 针对目前我们的所学内容,完成一个综合案例:学生管理系统! 该系统主要功能如下: 1.添加学生:通过键盘录入学生信息,添加到集合中 2.删除学生:通过键盘录…...
一篇解决Linux 中的负载高低和 CPU 开销并不完全对应
负载是查看 Linux 服务器运行状态时很常用的一个性能指标。在观察线上服务器运行状况的时候,我们也是经常把负载找出来看一看。在线上请求压力过大的时候,经常是也伴随着负载的飙高。 但是负载的原理你真的理解了吗?我来列举几个问题&#x…...
关于IDM下载器,提示:一个假冒的序列号被用来注册……idea项目文件路径报红
关于IDM下载器,提示:一个假冒的序列号被用来注册……到C:\Windows\System32\drivers\etc 修改目录下面的hosts文件(如果没有修改的权限就右键属性hosts文件修改user的权限为完全控制),在hosts里面增加以下内容…...
酒店做爰视频网站/推广软文范例100字
关于set_new_handler(转载)2010-09-05 16:59:37| 分类:学习心得| 标签:|字号大中小订阅当运算符new找不到足够大的连续内存块来为对象分配内存时将会发生什么?一个称为 new-handler的函数被调用。对于new-handler的缺省动作是抛出一个异常。…...
网站源码制作/百度联盟怎么加入赚钱
从十二星座分布图来看,我们不同星座位于不同的位置(废话),所以我们夏天旅游也要去不同的地方!要去就要去符合我们气场的地方,舒服。 这有关系吗???你又在骗我!…...
成都网站建设推荐q479185700顶上/app开发需要多少钱
iOS/Android DevCamp:移动开发者大本营 即将来袭 2012-06-18 12:20|54次阅读|来源:CSDN【已有0条评论】发表评论 关键词:iOS/Android,DevCamp|作者:张宁|收藏这篇资讯 每年的WWDC都得到了移动应用开发业界的重点关注,今…...
西安小程序开发公司/举例说明什么是seo
一、NSDate转NSString //获取系统当前时间 NSDate *currentDate [NSDate date]; //用于格式化NSDate对象 NSDateFormatter *dateFormatter [[NSDateFormatter alloc] init]; //设置格式:zzz表示时区 [dateFormatter setDateFormat:"yyyy-MM-dd HH:mm:ss zzz&…...
dz论坛做分类网站/杭州小程序建设公司
连试了几次全部失败。 只要用地铁卡了。 手机是:小米note2 支付宝首页》更多》便民生活》城市服务》交通》羊城通乘车码 出现二维码。 接着就是失败,失败,失败……...
discuz 做的网站/百家号排名
最近学WebGL需要读取本地图片,研究了一下Debbuger for chrome的拓展,发现可以传递执行参数"runtimeArgs": [" --disable-web-security"]来允许读取本地文件,以下是Json配置文件{"version": "0.2.0",…...