总结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()函数

转载于:https://www.cnblogs.com/linyuchen2008/p/6040441.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值