总结Selenium自动化测试方法(六)常见的异常错误处理
六、常见的异常错误处理
NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":"//div[id='urs']//form[@class='form-horizontal']//div[@class='span2 offset7 controls']//button[@class='btn btn-primary']"}
这个错误的可能性属于
①没有定位到元素的情况,此时要检查定位的xpath语句是不是写的错误,可以在Firefox上的Firebug的xpath工具栏上输入命令行看能不能定位到,再根据调试
②定位的xpath语句虽然正确,但是页面还没有加载完成,也就是说还没有加载出这个元素,解决的方法是加上sleeptime的机制,例如头文件import time,然后在页面打开后cls.driver = webdriver.Firefox()引入睡眠时间函数time.sleep(3),这样就可以等待页面加载3秒钟以后再执行后续的脚本
ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
Stacktrace:
at fxdriver.preconditions.visible
这个错误属于虽然定位到了元素,但是定位到了多个,因为页面上名称与此相同的元素有多个,而且第一个是不可见的,就报了这个错误,解决方法是分级定位,例如找到了//button[@class='btn btn-primary'],可以再向上级去找//div[@class='span2 offset7 controls']//button[@class='btn btn-primary'],如果还找不到再向上级找,以此类推,最后的定位xpath为//div[@id='urs']//form[@class='form-horizontal']//div[@class='span2 offset7 controls']//button[@class='btn btn-primary'],当然此时要注意层级不要分的太多,这样会影响定位的效率(会找的很慢)
AssertionError: u'\u76f4\u64ad\u95f4\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf' != u'\u76f4\u64ad\u95f4\u540e\u53f0\u7ba1\u7406\u7cfb'- \u76f4\u64ad\u95f4\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf
? -
+ \u76f4\u64ad\u95f4\u540e\u53f0\u7ba1\u7406\u7cfb
这个错误属于在执行Assert语句时返回了不正确的比较结果,所以就输出了AssertionError log信息,这个问题要分三个步骤来检查①首先是检查下定位的内容是不是与要比较的内容定的是一个位置,位置不一样比较出来的肯定不一样②定位都正确了,但是还要确定是不是定位的值写的是对的,有时候中文需要用转义字符u、有的空格也需要格外注意下③排除上面的那就是考虑是不是比较出来真的不一样是不是由于研发对于文案、代码的改动引起的
File "C:/Users/linyuchen/.spyder2/auto_Web_UI_Test_Script_2016骞�鏈�6鏃�00055/roomTestgetRoomList.py", line 20
cls.success_url = 'http://qz.fa.163.com/management/room/analyst#choose-room'
^
IndentationError: expected an indented block
这个错误是由于该行的书写缩进错误造成的,缩进解决后页面上不会有!的提示了
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 0: unexpected end of data
这个错误是由于在传值时,如果值是文字,要在双引号前加u,汉字要经过utf-8转码才可用,例如: self.driver.find_element_by_xpath("/div[2]/div/input").send_keys("地方是国峰")要在前面加上u: self.driver.find_element_by_xpath("/div[2]/div/input").send_keys(u"地方是国峰")
NoAlertPresentException: Message: No alert is present
这个错误是由于脚本中加了警告框的处理,但是实际上页面此时没有警告框,解决方法是把这个语句加到警告框出现以后的位置再调用switch_to_alert().accept()函数
总结Selenium自动化测试方法(六)常见的异常错误处理的更多相关文章
- 总结Selenium自动化测试方法(一)自动化测试基础
总结Selenium自动化测试方法 一.自动化测试基础 1.什么样的项目适合自动化测试 ①任务测试明确,不会频繁变动 ②每日构建后的测试验证 ③比较频繁的回归测试 ④软件系统界面稳定.变动少 ⑤需要在 ...
- 总结Selenium自动化测试方法(四)WebDriver常用的操作
四.WebDriver常用的操作 1.控制浏览器操作 #控制浏览器的大小 self.driver.set_window_size(480,800) #控制浏览器返回 self.driver.back( ...
- 总结Selenium自动化测试方法(五)自动化测试框架
五.自动化测试框架 1.单元测试框架unittest class loginTests(unittest.TestCase): ①开始的初始化部分 @classmethod def setUpClas ...
- 总结Selenium自动化测试方法(二)测试环境搭建
(接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...
- 总结Selenium自动化测试方法(三)WebDriver定位元素方法
三.WebDriver定位元素 推荐使用的webdriver是firefox,因为他的firebug更能可以帮助定位页面元素使用 # create a new Firefox session cls. ...
- python+selenium自动化软件测试(第2章):WebDriver API
2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...
- Selenium自动化面试题
(1)selenium的工作原理? ① 脚本启动driver ② driver去驱动浏览器作为远程服务器 ③ 执行脚本发送请求 ④ 服务器解析请求作出相应操作,并返回给客户端(脚本) ( ...
- python selenium自动化点击页面链接测试
python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...
- Selenium自动化测试之数据驱动及用例管理
Selenium自动化测试之数据驱动及用例管理 一.TestNg注解介绍 @Test:表示一个测试方法,在运行测试用例过程中,会自动运行@Test注解的方法. 例:
随机推荐
- JavaScript在IE6,IE7下报错'expected identifier, string or number'
问题: 代码在Forefox和IE8下工作正常,但是在IE6下报错: expected identifier, string or number 假如变量options有多个选项,那么我们可以用逗号分 ...
- HDU1005Number Sequence(找规律)
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- WPF编程学习——样式
本文目录 1.引言 2.怎样使用样式? 3.内联样式 4.已命名样式 5.元素类型样式 6.编程控制样式 7.触发器 1.引言 样式(Style),主要是用来让元素或内容呈现一定外观的属性.WPF中的 ...
- Codeforces Round #263 (Div. 2)
吐槽:一辈子要在DIV 2混了. A,B,C都是简单题,看AC人数就知道了. A:如果我们定义数组为N*N的话就不用考虑边界了 #include<iostream> #include &l ...
- ASP.NET - 演练:创建网页以显示 XML 数据
数据通常是以 XML 格式提供给 Web 应用程序的.但是,XML 数据本质上是分层的,因此您可能希望能够在基于列表的控件中使用 XML 数据,如 GridView 或 DropDownList 控件 ...
- Extjs文本输入框
var loginForm = Ext.create('Ext.form.Panel', { title: '单行输入', renderTo: Ext.getBody( ...
- 使用Rails 4.2+ 测试异步邮件系统
[导读]异步测试总是一个很大的问题,邮件发送测试更是让很多开发同学不知道从哪里入手.在新版的Rails里,这类测试在很大程度上被简化了. 以下为译文 在编写需要发送邮件的应用时,控制器是绝不能被阻塞的 ...
- javascript 注意事项
1.submit input 标签的 type里的submit是提交表单的按钮 提交时应注意 为 标签加上 “name=""”字段和form标签,才能达到想要的效果 2.正则表达 ...
- iOS-CALayer遮罩效果
self.view.backgroundColor = [UIColor blackColor]; , , , ); self.imageLayer.contents = (__ ...
- 读取excel文件内容代码
最近工作需要批量添加映射excel文件字段的代码 于是通过读取excel2007实现了批量生成代码,记录下代码 需要引入poi的jar包 import java.awt.List; import j ...