六、常见的异常错误处理

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自动化测试方法(六)常见的异常错误处理的更多相关文章

  1. 总结Selenium自动化测试方法(一)自动化测试基础

    总结Selenium自动化测试方法 一.自动化测试基础 1.什么样的项目适合自动化测试 ①任务测试明确,不会频繁变动 ②每日构建后的测试验证 ③比较频繁的回归测试 ④软件系统界面稳定.变动少 ⑤需要在 ...

  2. 总结Selenium自动化测试方法(四)WebDriver常用的操作

    四.WebDriver常用的操作 1.控制浏览器操作 #控制浏览器的大小 self.driver.set_window_size(480,800) #控制浏览器返回 self.driver.back( ...

  3. 总结Selenium自动化测试方法(五)自动化测试框架

    五.自动化测试框架 1.单元测试框架unittest class loginTests(unittest.TestCase): ①开始的初始化部分 @classmethod def setUpClas ...

  4. 总结Selenium自动化测试方法(二)测试环境搭建

    (接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...

  5. 总结Selenium自动化测试方法(三)WebDriver定位元素方法

    三.WebDriver定位元素 推荐使用的webdriver是firefox,因为他的firebug更能可以帮助定位页面元素使用 # create a new Firefox session cls. ...

  6. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  7. Selenium自动化面试题

    (1)selenium的工作原理?        ① 脚本启动driver ② driver去驱动浏览器作为远程服务器 ③ 执行脚本发送请求 ④ 服务器解析请求作出相应操作,并返回给客户端(脚本) ( ...

  8. python selenium自动化点击页面链接测试

    python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...

  9. Selenium自动化测试之数据驱动及用例管理

    Selenium自动化测试之数据驱动及用例管理 一.TestNg注解介绍 @Test:表示一个测试方法,在运行测试用例过程中,会自动运行@Test注解的方法. 例:

随机推荐

  1. Leetcode#137 Single Number II

    原题地址 遍历所有数字,统计每一位出现的次数,模3即为只出现一次的数字在那一位的情况. 代码: int singleNumber(int A[], int n) { ] = {}; ; i < ...

  2. C语言预处理命令

    1.#error Directive (C/C++) The #error directive emits a user-specified error message at compile time ...

  3. 一个有趣的Ajax Hack示范

    今天在梦之光芒的BLOG上看见了一个Ajax Hack示范,其实跨站发现很容易,但是要做到大危害还是很难,偷偷COOKIE什么的只针对用户而已,XSS WORM的那种利用才是可怕的. 来看看他的一段V ...

  4. doctype声明、浏览器的标准、怪异等模式

    doctype 标准(严格)模式(Standards Mode).怪异(混杂)模式(Quirks Mode),如何触发,区分他们有何意义? 触发标准模式 1.加DOCTYPE声明,比如:<!DO ...

  5. POJ 1679 The Unique MST(次小生成树)

    题意:求解最小生成树的权值是否唯一,即要我们求次小生成树的权值两种方法求最小生成树,一种用prim算法, 一种用kruskal算法 一:用prim算法 对于给定的图,我们可以证明,次小生成树可以由最小 ...

  6. Masonry自动布局

    介绍,入门: http://www.cocoachina.com/ios/20141219/10702.html 下载: http://code.cocoachina.com/detail/30114 ...

  7. 深入浅出ES6(十五):子类 Subclassing

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 在之前的文章<深入浅出ES6(十三):类 Class>中,我们一起深 ...

  8. URAL 1152. False Mirrors (记忆化搜索 状压DP)

    题目链接 题意 : 每一颗子弹破坏了三个邻近的阳台.(第N个阳台是与第1个相邻)射击后后的生存的怪物都对主角造成伤害- 如此,直到所有的怪物被消灭,求怎样射击才能受到最少伤害. 思路 : 状压,数据不 ...

  9. 为什么toString方法可以用来区分数组和对象?

    首先大家都应该知道在javascript中只有是对象都存在toString方法,将调用该方法的值转换为字符串返回,如下: var arr = [1, 2, 3]; console.log(arr.to ...

  10. SQL Server Configuration Manager出错

    在 Windows 桌面上,单击“开始”,然后单击“运行”.  在“打开”框中,键入 MMC,然后单击“确定”.  在“控制台”窗口中,单击菜单栏上的“文件”,然后单击“添加/删除管理单元”.  在“ ...