聊聊用Selenium做自动化碰到了哪些坑?都是怎么解决的?
本周我们的讨论话题是关于Selenium自动化:
话题:聊聊用Selenium做自动化碰到了哪些坑?都是怎么解决的?
话题描述:Selenium是大家做UI自动化用到的主流框架,在平时写脚本的过程中,你肯定会碰到各种各样的坑,估计会花费你大量的时间查资料去解决。这周我们就来聊聊在Selenium过程中,你碰到的那些坑,以及最终都是怎么解决的?希望讨论内容可以帮助到遇到相同问题的同学。每一次的分享和讨论,对你来说都是有思考过程的,都是一次成长和提升。
大家讨论分享的结果
知识星球—silent
element元素可以定位到但是单击会报错 转用双击解决问题 定位元素不稳定,直接找元素加使用显示等待找,找元素的时候使用while 循环 找到元素直接返回element 对象 找不到 sleep 0.5 continue 再找 最多找10 次 用时大概6s多 目前这种方式解决了div弹窗提示出现时断言代码已经执行完毕造成断言失败 个人最近做ui自动化的一点小体验 望大佬指正
- 点评:看了好几遍silent分享的内容,但是没太理解他的思路,最开始我以为只是点击失败,所以还回复“可以试试用执行js脚本的方式来点击”。但是现在又认真读了读这几句话,开始有些犯迷糊了。
- 如果是解决element元素可以定位,但是不能点击的错误。有很多种方法:第一可以用业内比较多用的方法,driver.execute_script("$(arguments[0]).click()", element),这种方法能直接将点击事件作用于控件上。第二可以自己封装重试点击的方法,当然可以结合具体的场景实现方法的逻辑(比如:检测是否有浮层或者弹框等)。
我最近碰到的问题
因为我的界面元素操作其实不多,主要操作就是:添加cookie、三次点击事件,所以我碰到的元素定位的问题比较少。我最主要的操作点是多并发且同时启动多个chrome浏览器实例,所以我碰到的问题多是和资源相关的。
- message:unknown error: unable to discover open pages:碰到这种错误,根据字面意思,就是无法打开新的页面了,可以检查下内存是否够用,启动一个浏览器实例需要消耗220M内存左右。我之前就是忽略了运行脚本机器的资源问题,造成碰见这个错误,排查了好久。
- Message: timeout: Timed out receiving message from renderer:造成这个错误的原因应该挺多的,如果看Selenium日志的小伙伴会发现,即使脚本是正常的情况,也有可能会刷这个日志。不过我碰到的这类错误,有两个主要原因:
- 运行机器(hub和node在一台机器或者是node机器)的cpu被打满了,造成不能及时处理请求,进而造成超时。
- 用docker容器启动节点,hub和node不在同一台机器上,会超时。(这个在之前的文章中有提到过)。
- unknown error: DevToolsActivePort file doesn't exist:在没有界面的服务器上跑脚本,需要在启动浏览器时配置两个参数:--headless(无头模式)、--no-sandbox(以最高权限运行)。
- 上面提到的问题:元素可以定位,但是点击却不生效。我是直接采用driver.execute_script("$(arguments[0]).click()", element)这种方式,可以正常解决。
- docker 部署selenium grid,在不同机器上,网络不通,这个目前还没研究,可能需要使用docker集群管理。
- 关闭webdriver时quit()和close()用的不对。quit是退出webdriver,并且关闭与之关联的所有窗口;close仅仅是关闭当前窗口。这个在Selenium Grid中体现很明显,如果调用的是close方法,会看到节点一直不能被释放。
总结
我之前写UI自动化不多,最近接触Selenium,感触最深的是,经常会抛一些很莫名其妙的错误,然后就只能各种查资料。实在是找不到资料,就只能去翻源码,往往是能找到一些思路的。
所以,通过本周的讨论话题,也是建议大家在接触一种新的技术时,可以一边用,一边学。碰到对应的问题,再查资料解决,这样反而会更容易上手。
这就是之前香帅老师在课程里提到的learning by doing。
聊聊用Selenium做自动化碰到了哪些坑?都是怎么解决的?的更多相关文章
- selenium做UI自动化时,模拟鼠标各种操作的ActionChains的用法
1.selenium做自动化的时候,需要模拟鼠标进行单击.双击.右键.拖拽等操作,selenium提供了ActionChains类来进行处理. 2.执行原理:当你调用ActionChains的方法时, ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- Selenium Web 自动化 - 项目持续集成(进阶)
Selenium Web 自动化 - 项目持续集成(进阶) 2017-03-09 目录 1 背景及目标2 环境配置 2.1 SVN的安装及使用 2.2 新建Jenkins任务3 过程分析 1 背景 ...
- Selenium Web 自动化 - 项目持续集成
Selenium Web 自动化 - 项目持续集成 2017-02-13 目录 1环境准备 1.1 安装git 1.2 安装jenkins 1.3 安装jenkins插件 1.4 jekins ...
- Selenium Web 自动化 - Selenium常用API
Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作 1.1 用webdriver打开一个浏览器 1.2 最大化浏览器&关闭浏览器 ...
- Selenium Web 自动化 - 项目实战环境准备
Selenium Web 自动化 - 项目实战环境准备 2016-08-29 目录 1 部署TestNG 1.1 安装TestNG 1.2 添加TestNG类库2 部署Maven 2.1 mav ...
- Selenium Web 自动化 - 项目实战(一)
Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...
- selenium+python自动化处理时间控件
尝试编写12306网站查询余票信息的自动化脚本时,碰到日期选择的问题,此处做一下记录:
- RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)
好久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经越来越重要了,大部分公司在测试岗位招聘中都需要会相关的自动化测试知识.而 RobotFramework自动化测试框架 是自动化测试 ...
随机推荐
- C++扬帆远航——6(三色球)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:sanseqiu.cpp * 作者:常轩 * 完成日期:2016 ...
- Python——3条件判断和循环
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- 6,HDFS HA
目录 HDFS HA 一.HA(High Availability)的使用原因 二.HA的同步 三.HA的自动容灾 HDFS HA 一.HA(High Availability)的使用原因 1.1 在 ...
- 手把手教你轻松使用数据可视化BI软件创建某疾病监控数据大屏
灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件. 本文以某疾病监控数据大屏为例为 ...
- 用 Java 实现人脸识别功能(附源码)
整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 ...
- 【jQuery学习日记】jQuery实现滚动动画
需要实现的效果 样式分析: 2个主要部分,头部的标题和导航部分,和主要的功能实现区域: 1.头部 <div id="header"> <h1>动漫视频< ...
- 一步步去阅读koa源码,整体架构分析
阅读好的框架的源码有很多好处,从大神的视角去理解整个框架的设计思想.大到架构设计,小到可取的命名风格,还有设计模式.实现某类功能使用到的数据结构和算法等等. 使用koa 其实某个框架阅读源码的时候,首 ...
- java多线程之间的通信
目的 如何让两个线程依次执行? 那如何让 两个线程按照指定方式有序交叉运行呢? 四个线程 A B C D,其中 D 要等到 A B C 全执行完毕后才执行,而且 A B C 是同步运行的 三个运动员各 ...
- elasticsearch 单机安装
一.elasticsearch下载 1.elastic 官网:https://www.elastic.co/cn/ 2.elasticsearch 下载地址:https://www.elastic.c ...
- Spring Boot 自动装配流程
Spring Boot 自动装配流程 本文以 mybatis-spring-boot-starter 为例简单分析 Spring Boot 的自动装配流程. Spring Boot 发现自动配置类 这 ...