【基础】错题集1_Python3_网页自动化1
1.Python:vscode编写python时提示Python(unresolved-import)
在引用自定义模块时,在代码无错的情况下,vscode提示Python(unresolved-import)
可在vscode的setting.json中添加"python.analysis.disabled":["unresolved-import"]
以消除该warning
2.Parsing Error xml.parsers.expat.ExpatError: not well-formed (invalid token): line X column Y
报这个错误主要还是“转码”的问题,如果xml文件中没有中文,自然能够输入所需要的数据,但是现在xml文件中有中文。一般习惯用txt来编辑xml文件进行数据保存,但是在用txt编辑完xml文件后,直接保存,默认保存的编码方式是ANSI。
问题就出在编码方式,如果我们用UTF-8的编码方式保存后,重新执行脚本,那么程序执行成功。
解决办法:
把文件用编辑器打开,复制剪贴到http://web.chacuo.net/formatxml格式化之后,把格式化之后的内容复制出来,粘贴保存就可以了。
3.Python+selenium验证部分文本框内容相符即断言成功
分析:只获取部分文本信息“您已登录成功!”即可断言系统登录成功
登录信息是PI地址和时间,是变量,比较复杂
解决办法:
message=driver.find_element_by_id(‘idvalue’).text
if
message.startswith(您已经登录系统!): print(“登录成功”)
else:
print(“登录失败”)
同理,在编写自动化测试的时候也可类似使用
assertEqual(message.startswith(“您已经登录系统!”),True)
4.Python3+selenium报错处理:
“selenium.common.exceptions.NoAlertPresentException:
Message: No alert is active”
对于弹框各种资料都说通过switch_to.alert属性获取对话框对象,然后使用该对象的accept()方法点击确认。
但使用该方法,一直报错:“selenium.common.exceptions.NoAlertPresentException:
Message: No alert is active”
解决办法:
使用switch_to.active_element确认按钮然后点击
element= browser.switch_to_active_element().click()
5.selenium中sendkeys()方法输入中文报错之解决方案
python的编码为utf8,直接打印中文都是正常的,但是在使用selenium的方法sendkeys()发送中文时,会报错提示UnicodeDecodeError:‘utf8’codec can’t decode byte0xe6 in position 0: unexpected end of data
解决办法:
sendkeys()发送中文时需要明确指出其编码:
方式1,在中文前加入u
driver.find_element_by_class_name(“s_ipt”).send_keys(u’测试’)
方式2,使用decode()方法
driver.find_element_by_class_name(“s_ipt”).send_keys(str.decode(‘utf-8’))
6.使用HTMLTestRunner生成的html文件名添加不进去时间戳
now = time.strftime("%Y-%m-%d %H:%M:%S")
filename = 'D:\\python\\test_163email\\test_case\\report\\'+now+' delete_result.html'
文件名不能带符号‘:’,因此使用time.strftime()时,其内不能使用‘%H:%M:%S’这种形式
解决办法:
now = time.strftime("%Y-%m-%d %H_%M_%S")