聊聊用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自动化测试框架 是自动化测试 ...
随机推荐
- api安全规范
1. API签名的目的 校验API调用者的身份,是否有权访问 校验请求的数据完整性,防止被中间人篡改 防止重放攻击 2.基本概念 AccessKey: API使用者向API提供方申请的Ac ...
- C++走向远洋——52(十三周阅读程序)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- Cenots 7 安装mysql cluster 通过rpm 包
环境:Cenots 7 MG:192.168.0.105 NDB:192.168.0.108 NDB:192.168.0.109 SQL:192.168.0.111 SQL:192.168.0.107 ...
- 达拉草201771010105《面向对象程序设计(java)》第四周学习总结
实验四类与对象的定义及使用 实验时间 2018-9-20 第一部分:理论知识 1.类与对象概念 (1)类是具有相同属性和方法的一类事物的抽象,是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例 ...
- 从0开发3D引擎(十一):使用领域驱动设计,从最小3D程序中提炼引擎(第二部分)
目录 上一篇博文 本文流程 回顾上文 解释基本的操作 开始实现 准备 建立代码的文件夹结构,约定模块文件的命名规则 模块文件的命名原则 一级和二级文件夹 api_layer的文件夹 applicati ...
- AVCaptureInput和AVCaptureOutput子类介绍
AVCaptureInput AVCaptureDeviceInput:用于从AVCaptureDevice对象捕获数据. AVCaptureScreenInput:从macOS屏幕上录制的一种捕获输 ...
- 前端实现html转pdf方法总结
最近要搞前端html转pdf的功能.折腾了两天,略有所收,踩了一些坑,所以做些记录,为后来的兄弟做些提示,也算是回馈社区.经过一番调(sou)研(suo)发现html导出pdf一般有这几种方式,各有各 ...
- 前端每日实战:4# 视频演示如何用纯 CSS 创作一个金属光泽 3D 按钮特效
效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/full/MGeRRO 可交互视频教程 此视频是可以 ...
- H5开发移动应用APP(店铺系列一)
首先,这是个真实的案例,我大兄弟在深圳开汽修店铺,但需要系统来管理日常经营活动,这正不是我擅长的吗? 说干就干,直接后端+web端+移动端来一套,于是紧急赶工,起早摸黑,产出约3万行总量代码,此系统与 ...
- JS模块规范:AMD,CMD,CommonJS
浅析JS模块规范 随着JS模块化编程的发展,处理模块之间的依赖关系成为了维护的关键. AMD,CMD,CommonJS是目前最常用的三种模块化书写规范. CommonJS CommonJS规范是诞生比 ...