自动化面试遇到的问题分析
1. 找不到元素,脚本报“NoSuchElementException:Unable to find element”,或者"定位到了,不能操作,点击无效"
1) 首先查看自己的“属性值”是否写正确
2) 元素的标签不唯一,默认找到第一个
3)向上查看,元素是否在frame或iframe框架中
4) 查看元素是否在新打开的页面中,需要切换到新窗口
5) 换其它的定位方式:id/name/class name/tag name/link text/xpath/css selector
6) 检查元素属性是否是会变动的、是否是隐藏的
7)添加等待时间sleep(),implicitly_wait(),WebDriverWait(driver, 10, 1).until(定位的元素, messages)
隐式等待是全局等待,适用于整个测试过程中都需要等待元素出现的情况。
显式等待更加灵活,可以根据不同的情况设置不同的等待条件,可以等待元素可见、可点击等等。
8) 查看标签的属性是否有“style=’display:none’->。元素不显示。属性改为block
9) 查看标签的属性是否有‘οnclick=return false’->。取消点击。属性改为false(在百度首页,登陆的属性就是这个)
10) 针对于9和8这两种情况,我在网上搜到的结果是:执行js修改属性(这种方法我没有试过,不知道有没有效果)
js=”document.getElementById(‘title‘).style.display=’block’”
driver.execute_script(js)
2.出现“Indentation Error”: 是语法问题,脚本代码没有正确对齐
3.类里的方法要求需要2个参数,实例化对象后调用方法时却给多或给少了参数
4.方法或函数传参时数据类型对应不上,如int和str
5.类里的方法必须带上self,而函数不需要(有时候写漏)
6.出现“str object is not callable”的问题(原因是:使用定义的变量名字与内置模块名字相同)
7.appium自动化webview时遇到的chromedriver报错:This version of ChromeDriver only supports Chrome version 78
解决:https://www.cnblogs.com/aiyumo/p/11881055.html、https://www.jianshu.com/p/b96755bf4916
chromedriver与chrome版本映射表https://www.jianshu.com/p/af6614aa0927
下载好对应版本的 chromedriver存放路径:/usr/local/lib/node_modules/appium/node_modules/_appium- chromedriver@4.24.2@appium-chromedriver/chromedriver/mac/chromedriver.exe
8. python3使用pip安装HTMLTestRunner,报错:module 'HTMLTestRunner' has no attribute 'HTMLTestRunner'
解决方法:从网上找到对应修改后的HTMLTestRunner.py文件放在python的lib下
- https://www.cnblogs.com/testyao/p/5658200.html
- https://blog.csdn.net/wei_ada/article/details/105879199
9. noReset参数:默认为False,不清除session信息,每次启动app都为初始化状态;若设置为True,如果上一个测试用例登陆成功了,下一个测试用例,在打开app时,进来的页面是登录成功后的页面。会保持登录状态。