python运行selenium时出现的一个错误总结

1.SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame

场景:运用pandas修改某个序号所对应的key值时出现了该类警告

https://stackoverflow.com/questions/26724378/pandas-settingwithcopywarning

代码:

df_index = df.loc[index]
df_index[key] = value

修改:

df.loc[index,key] = value

这里的“index”是df数据中序号,“key”是标签所对应的key,“value”为需要修改的内容,value可以为int、str、以及类对象

 

2.selenium.common.exceptions.WebDriverException: Message: unknown error: Element is not clickable at point (456, -17)

场景:打开微信公众号的链接之后,将浏览器修改为手机模式之后,通过click去点击的时候提示不可点击
办法:设置浏览器为最大化之后就可点击了

3.selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified

原因:定位方式写错了

 

4.SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape

场景:在“ini”为后缀名的文件中写入的文件路径

方法:输入路径或者网址时用的是反斜杠‘\’导致错误,如果用双正斜杠就好了’//’

 

 5.TypeError: invalid type comparison

场景:使用operator对两个list进行比价时,出现问题

原因:有一个list是str类型的数据,有一个数int类型的数据

方法:将某一个list里面的数据进行转换之后在添加到list中然后在进行比较

 

6.TypeError: ‘module’ object is not callable

from导入的时候包名写错

场景:手动导入包时,因大小写的关系或者包名重新修改了,导致找不到相应的包

 

 

 7.TypeError: not all arguments converted during string formatting

print进行输入时语句上只写了两个%s,但是参数却有多个。

场景:进行输出时,输出参数多于了定义的参数

 

 

8.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

页面刷新之后需要重新定位。

场景:执行某一个动作之后,界面重新刷新。此时元素需要重新定义

 

9.ValueError: Can only compare identically-labeled DataFrame objects

错误原因:需要比较的两个数据类型(即type类型不一致)不一致

出项的场景:

1.两个pandas对象进行比较时,各自长度不相等出现的错误
2.同一个key下面的数据 value 数据 type 不同

 

10.TypeError: argument of type ‘NoneType’ is not iterable

错误原因:程序运行过快,没有设置中间变量时导致

出现场景:想获取df里面的某个值并传入相应的函数中

weizhi = self.overall[dn.dailyCity()]
dl.setSelectorText(weizhi)

11.ValueError: invalid literal for int() with base 10: ‘2018-04-05 00:00:00-2018-05-06 23:59:59’

错误原因:自己写的时间戳转日期的函数时,本应传入时间戳,而我传入的是日期格式所以导致这个问题

 

12.TypeError: expected string or bytes-like object

错误原因:拿一个空的数据去执行正则比较。

场景:

my_sql = None,然后运行regular = re.match(‘^SELECT’, my_sql)

 

13.TypeError: not all arguments converted during string formatting

错误原因:数据打印的格式输入有误

出现场景:log日志进行输出时导致
self.log.info( inspect.stack()[0][3] % “%s 公告页面的tbody不存在” )

修改后:self.log.info(  “%s 公告页面的tbody不存在” % inspect.stack()[0][3] )

 

14.tuple index out of range

错误原因:好像是因为mysql语句指令太长导致,当时同时有多个错误。后面没有进行校验

 

15.bs4.FeatureNotFound: Couldn’t find a tree builder with the features you requested: lxml. Do you need to install a parser library?

错误原因:没有安装lxml,然后bs4获取数据之后又使用lxxml进行数据解析然后错误错误

解决方案:pip install lxml就解决了

16.TypeError: not all arguments converted during string formatting

错误原因:time.localtime(status_time)转换的数据之后不能通过字符串形式进行输出

场景:pring(“时间” + time.localtime(status_time))

 

17.TypeError: Object of type ‘WebElement’ is not JSON serializable

错误原因:driver通过css_selector来获取元素时,应该传入css_selector路径而我传入一个int数据

 

18.local variable ‘attribute’ referenced before assignment

错误原因:局部变量元素attribute没有函数

场景:EC判断一个元素是否找到,如果找到就获取attribute属性值,没有知道就返回FALSE。

而当时没有找到我也去获取attribute属性值然后就报错了,都是复制粘贴的错误

 

19.yaml.scanner.ScannerError: while scanning a block scalar expected a comment or a line break, but found ‘t’

错误原因: 在编写元素路径时(thead: > tbody > tr) 多写了一个冒号,然后报错

 

20.ValueError: Unsupported or invalid CSS selector: “>tbody”

错误原因:使用bs4爬取数据时,因通过select来查找数据,多写了>tbody。提示找不到tbody。去掉该tbody即可

 

21.AttributeError: ‘NoneType’ object has no attribute ‘encoding’

错误原因:mysql进行链接时,字符集charset没有设置为utf8而是设置为QQAA导致的。
场景:链接数据库时charset设置有误

self.connect = pymysql.Connect(
host=host,
port=port,
user=user,
passwd=passwd,
db=db,
charset=charset
)

 

22.ValueError: I/O operation on closed file.

错误原因:使用with open()as file时,在with里面创建参数然后在with外面进行使用

针对with写入数据一个优化:with open() as file:往csv写入数据时,每个数据之间都有一个空格。
解决方法: open(newline=”)中指定newline参数为空,官方解释该参数是每个csv之间的分割符

 

23.http.client.CannotSendRequest: Request-sent

错误原因:在接口请求数据时网络请求太快

解决方法:每个请求之间加个休眠的时间

 

24.TypeError: ‘NoneType’ object is not iterable
错误i原因:yaml数据为空时,去读取yaml文件数据
解决方法:在yaml里面随意写入一些数据信息

 

25.KeyError: <module ‘project_path’ from ‘E:\\project_path\\__init__.py’>

报错的地方: HTMLTestRunner执行多任务的ceses时,出现这类问题。单个cese执行的时候并没有报错
错误原因: case包命名不规范
方法: 对case的包名进行修改

 

26.KeyError: ‘pass_ticket’

错误原因:wxpy框架登陆微信时出现这个错误
解决方案:不要使用小号微信或者有异常又或者没有使用web登录过的微信号

 

27.HTMLTestRunner:生成的报告中,“通过”按钮无法点击。

原因:运行case时没有输出语句

解决方案:每个case都加个log

 

28.最开始unittest中defaultTestLoader的discover函数中top_level_dir属性传入none

多线程运行的时候出现了匪夷所思的错误,发现top_level_dir需要传入项目的起始路径

discover = unittest.defaultTestLoader.discover(case_path,
pattern=rule,
top_level_dir=CUR_PATH)

对该字段还没有理解,希望有人给出更好的解释

 

日后再更新。。。。。。。。

 

点赞