一、 NoSuchElementException 没有这个元素
排错方法:
第一步:首先确认元素在页面是否存在
(在网页打开开发者工具,手动检查是否真的存在)
1.1 是否正确复制了元素的cssSelector 或者 xpath
复制之后,最好不要进行修改
可以在开发者工具里,搜索一下 ctrl+f ,把刚复制到内容粘贴上去看看是不是能找到
1.2 是否编写自动化脚本的时候,findElement(By.cssSelector (“”)) 和 findElement(By.xpath(“”)) 敲错了。
也不要把 cssSelector的内容放进xpath,或者xpath的内容放到cssSelector里了
第二步:的确不存在 这个元素
2.1 手动打开的页面 和 自动化打开的页面 是否存在
(一个登录了,一个没登录)
2.2 元素为动态元素 (每次刷新网页,cssSelector 或者 xpath 会变化)
解决办法:先定位 动态元素上一级标签,通过上一级标签定位 该动态元素
第三步:自动化打开的页面确实存在该元素
3.1 是否有打开新的页面,导致driver还指向旧的页面,找不到新页面的元素。
同理,关闭窗口后,是否切换回来了。
解决方法:切换句柄handle,切换窗口
3.2 代码执行速度比页面渲染速度快,页面还没渲染出来,程序就开始找元素了
解决办法:添加等待(强制等待 Thread.sleep(3000)、隐式等待、显示等待)
3.3 增加了等待 ,还是找不到元素
是否 多种等待混合使用了,没有一直各个等待直接的区别
二、 NoSuchSessionException 没有这个session
这个问题发生在,多个测试用例一起测试的时候
问题在于,第一个测试用例执行完,我使用了 quit()将浏览器关闭了
这导致后面的的测试用例无法正确进行
如果连续执行测试用例,需要注意一下,quit()