记录一下最近学习自动化测试遇到的一些问题
问题1:
在元素定位中,可以根据属性class_name来定位。但是当class_name的属性值中存在空格,如果把属性全部值复制过来,以此定位,便会出现定位失败的情况。
原因:
这是因为class属性中间的的空格并不是空字符串,而是间隔符号。表示,这个元素的class属性有多个属性值。(注意,name、id等属性并没有如此特别的情况)。
解决办法:
(1)、可以取其中某一个的一个就行了,当然此属性值要求在此页面上是唯一的。
(2)、如果属性值在此页面上不唯一,可以用Xpath或CSS定位方法,通过定位class_name进行定位。
例如,在登录百度网盘时,部分代码如下:
# driver.find_element_by_class_name('pass-text-input').send_keys('264968731@qq.com')
driver.find_element_by_xpath('//input[@ @class = "pass-text-input pass-text-input-userName"]').send_keys('264968731@qq.com')
driver.find_element_by_css_selector('.pass-text-input .pass-text-input-password').send_keys('264968731@qq.com')
问题2:
通过元素定位方法登录126邮箱时,元素的定位寻找都是正确的,但是怎么都成功登录。
原因:
在126的登录界面中,存在iframe框架(百度的结果)
解决办法:
只要加上这样一句代码即可:
driver.switch_to_frame("x-URS-iframe")#登录页面存在iframe框架
问题3:
在用unittest单元测试框架,写测试用例时,文件(文件夹)的命名以Python中的保留字命名了。出现了如此低级的错误,导致当时找BUG找到崩溃。记得,当时就是用unittest命名文件夹了。
问题4:
在生成测试报告时,给测试报告自动命名时,文件的命名违反了windows下的规则。错误代码如下:
now = time.strftime('%Y-%m-%d %H:%M:%S')
fp = open('../report/'+now+'report.html','wb')
错误分析:在时分秒之间的冒号是英文状态下的冒号,违反了windows下的文件命名规则。
补充:
windows下的文件命名规则:
<1>文件名除了开头之外任何地方都可以使用空格。
<2>文件名中不能有下列符号:
“?”、“、”、“╲”、“*”、““”、“”“、“<”、“>”、“|”
更改代码:
now = time.strftime('%Y-%m-%d %H_%M_%S')#文件名中允许使用空格,但不允许使用下列字符(英文输入法状态):< > / \ | : " * ?;
#fp = open('../report/'+now+'report.html','wb')