unittest报错信息-解决方案

1.@property 标签,用于封装接口,使用当前标签可以引用框架的方法
unittest报错信息-解决方案_第1张图片
2.page定位异常:maximum recursion depth exceeded —问题描述:由于嵌套太多超过最大递归深度
解决方法:手动调整递归深度
import sys
sys.setrecursionlimit(100000)
导致问题的场景:
unittest报错信息-解决方案_第2张图片
3.driver.implicitly_wait()与time.sleep()的区别

implicitly_wait(5)属于隐式等待,5秒钟内只要找到了元素就开始执行,5秒钟后未找到,就超时;

time.sleep(5)表示必须等待5秒定位;

如何灵活运用这两种方式:

当某个页面元素变化多,影响多的情况下,用sleep,等页面元素稳定了,再定位。

如果用implicitly_wait(5),还没等页面元素稳定后就定位 ,导致定位不准确,比如操作某个元素后,会出现提示框,影响了后面元素的位置,导致定位不准确;所以用sleep,等提示框消失后开始定位

4.智能等待,用于解决每次都要显式等待太耗费时间的问题-但是遇到问题 click按钮无法点击,是由于已经获取到元素但是按钮还没展示出来导致的,报错信息如下,解决方式使用sleep()
unittest报错信息-解决方案_第3张图片
unittest报错信息-解决方案_第4张图片
unittest报错信息-解决方案_第5张图片
出现此问题的原因是因为定位到元素后有一瞬间无法进行点击,因此在获取到元素后添加等待1秒使元素可以点击,完美解决。
unittest报错信息-解决方案_第6张图片
presence_of_element_located与visibility_of_element_located区别
presence_of_element_located: 当我们不关心元素是否可见,只关心元素是否存在在页面中。
visibility_of_element_located: 当我们需要找到元素,并且该元素也可见。

5.driver内置保存截图方法

# nowTime = time.strftime("%Y%m%d.%H.%M.%S")
# imgUrl = REPORT_PATH + '\\imgs\\'
# self.driver.get_screenshot_as_file(imgUrl + '%s.png' % nowTime)

6.在page层写断言提示缺少参数问题,报错信息如下:
assertEqual() missing 1 required positional argument: ‘second’。
没实例化对象导致的
unittest报错信息-解决方案_第7张图片
7.静态方法 和 类方法
@staticmethod
静态方法,通过类直接调用,不需要创建对象,不会隐式传递self
@classmethod
类方法,方法中的self是类本身,调用方法时传的值也必须是类的公有属性,
就是说类方法只能操作类本身的公有字段

8.Windows下解决ImportError: cannot import name ‘main’

  • 卸载现在的pip:
  • python -m pip uninstall pip
  • 重装:
  • python -m pip install pip==19.0.3

9.Element:ElementClickInterceptedException 异常解决

意思是说,点击这个元素的时候,这个单击事件被上层的div给接收了……说明div覆盖在这个button上面。
element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
driver.execute_script("arguments[0].click();", element)

element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()、
***ps:思索,有时候日志所报的错误可能不是当前页面的错误,而是上一个页面的错误,再遇到问题时候应从报错页的上一步开始检查!!!

10.ImportError: No module namedXXX

有可能是运行时编译器选择问题

unittest报错信息-解决方案_第8张图片

11. assertEqual() missing 1 required positional argument: ‘second’

解决方案:
def test_python4():
	m = unittest.TestCase()
	m.assertEqual(1.1, 1.1, msg="error")
原因:
python实例化(创建对象)时写成mm = unittest.TestCase不可以不带括号,因为不加括号就不是启动实例,这个和设置一个别名是一样的(说白了 加括号就是调用init函数 不加括号就是不调用init函数,不调用init函数就无法使用参数)。
场景:

unittest报错信息-解决方案_第9张图片

你可能感兴趣的:(Unittest,unittest)