莫愁前路无知己,天下谁人不识君。。。。

python+selenium-------测试中常遇到的问题

上一篇 / 下一篇  2017-11-09 15:44:19 / 个人分类:测试技巧

1、提示:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 542: ordinal not in range(128)
原因:原因就是Python的str默认是ascii编码,和unicode编码冲突
解决方法:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
2. Python打开文件出现IOError: [Errno 22] invalid mode ('rb') or filename  
文件名前加“r”
3.UnicodeDecodeError: 'utf8' codec can't decode byte 0xe6 in position 0: unexpected end of data
直接在汉字之前加上u即可
4.UnicodeDecodeError: 'utf8' codec can't decode byte 0xb3 in position 0: invalid start byte
用"utf-8"不能解码,用"gbk"
fr = codecs.open(“0.htm” ,”r” , “gbk”)
stopwords[line.decode('utf-8')] = 1改为stopwords[line.decode('gbk')] = 1
5.ValueError: bad transparency mask
二维码是png,用的logo图片是jpg。
6.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
这个报错意思是找得到元素,但是它不在当前可见的页面上。可能性很多:
上个操作和下个操作间隔时间太短,代码执行速度比页面渲染速度快。
分辨率问题,运行环境驱动与调试的驱动不一样。
建议:用try的方法,失败的时候通过webdirver截一下图看是什么情况或重新使用 findElement 或 findElements 方法进行元素定位即可
7.运行报错:'geckodriver' executable needs to be in PATH
Firefox高版本需要使用 geckodriver 来驱动,不再使用Seleniu默认自带的Firefox webdriver,selenium3以上需要单独下载geckodriver
8.当出现如下错误时:ElementNotVisibleException: Message: element not visible,表示元素是不可见的
首先确认是不是你定位元素就有问题导致元素确实不存在;其次有些元素可能确实需要一定的加载时间,如果没有加等待,脚本程序可能会运行过快,从而定位不到这个元素;
  解决方法
  1.增加等待时间,time.sleep(2),这种方法比较通用,但是缺点时,如果加载的时间超过了给定的值,依然会报错;而且不管加载时间是长是短都需要sleep 5s;如果代码里出现很多这个,会增加脚本执行的时间;
  2.设置等待,包含显示等待和隐式等待,在一定时间内等待元素的出现,如果出现了,就即刻执行下面的代码,不会浪费多余的时间,至于具体的设置方法
    3.有frame/iframe框架,或者动态id导致,又或者是元素定位书写错误,再或者涉及到悬停、弹窗等问题,碰到要对症下药

TAG: 问题

引用 删除 小幼稚园   /   2017-11-20 14:40:06
5
 

评分:0

我来说两句

Open Toolbar