python+selenium自动化测试过程中遇到的问题及解决方法

2021-05-27 20:06发布

1. HTMLTestRunner模块调用出现问题


问题描述:

    当直接调用HTMLTestRunner模块时,会出现错误,运行结果如下图所示

   

问题解决:

    需要调用HTMLTestRunner模块下的HTMLTestRunner才能运行成功



2. 路径定位问题


问题描述:

    如果页面是动态刷新的,再次执行测试时,使用xpath绝对路径进行定位的元素可能就会发生变化。

问题解决:

    不过分依赖于工具来进行xpath绝对定位,使用其他方式来进行定位。


3. 元素定位问题


问题描述:

    当元素定位不到时,会抛出异常NoSuchElementException

问题解决:

1)元素id等属性是动态变化的

    再次刷新网页,查看元素的属性是否发生变化。

    解决:若元素的属性是动态变化的,采用其他方式来进行定位

2)页面元素未完全加载

    有时由于网速的问题,页面中的元素未能完全加载出来。

解决:

    ①设置强制等待

    

    

    ②设置隐式等待

    

3)窗体切换原因

    点击网页后可能会产生新的窗体。

    ①先获取点击网页前的窗体

    

    ②再获取点击网页之后的窗体

   


     ③如果产生新窗体,则进行切换

   

4)定位的元素嵌套在iframe/frame框架当中

    定位不到该元素时,可以查看一下页面的源码,看该元素是否嵌套在iframe/frame框架中。

    若元素嵌套在iframe/frame框架中:

    ①切换表单

    

     Tips: 如果遇到元素没有name或id属性,先用其他方式定位到frame然后再切换到该frame


    ②恢复默认页面

    


4. 短暂弹出框问题

    有的弹出框弹出时间较短,不能快速定位,此时可用Chrome浏览器来进行定位。

    F12打开开发者工具,点击source,当出现弹框时,点击右边的暂停键,再去定位元素的位置即可。


    此时需要与显式等待结合,来捕获弹出框的文本,通常要与异常捕获相结合

    

    注:显式等待需要用By类方法来进行定位

 

    Tips:一般poll_frequency默认为0.5,有时弹出框的时间特别短暂,需要将poll_frequency(检测间隔时间)降低。若多次运行后,还没定位到该元素,可能会出现自动化误报的情况。可能的原因:①网页运行问题②自动化机制问题


5. 执行自动化测试过程中,鼠标的位置可能会影响测试的过程

    在执行自动化测试的过程中,若遇到有图片放大或者悬停字样时,鼠标会自动定位图片或者文字,无法进行下一步操作,可以在代码中设置悬停到其他元素。


6. 函数问题

    1)若有部分内容是经常重复出现的,可以考虑写一个函数,后续直接调用该函数即可。

    2)函数的返回值调用时,只需要用一个变量去接收即可

    


7. 注意引用random模块来进行随机选择


8. 注意细节问题,考虑问题要全面,若项目中有前后台交互的情况,还要考虑。


9. Img图片覆盖问题


    在多次执行测试过程中,每次运行后的图片会被覆盖,可以给图片名称打上时间戳,这样每次的图片不会被覆盖。