Selenium 脚本稳定性问题
运行一个星期前升至更久前的脚本,,,出现如下错误提示
elementNotVisibleException was unhandled by user code。
经过询问大侠,说我的脚本不够健全,也就是稳定性的问题,需要增加一些判断等待,那需要封装一些等待方法
public static void WaitUnit<T>(this IWebDriver webDriver, Func<IWebDriver, T> func, int seconds = )
{
var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(seconds));
wait.Until(func);
} /// <summary>
/// 强制让webdriver等待,直到给定的元素(by)存在于DOM之中
/// </summary>
public static void WaitElementExist(this IWebDriver webDriver, By by, int seconds = )
{
var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(seconds));
wait.Until(ExpectedConditions.ElementExists(by));
} /// <summary>
/// 强制让webdriver等待,直到给定的元素(by)的CSS属性visiblity的值为visible
/// </summary>
public static void WaitElementVisible(this IWebDriver webDriver, By by, int seconds = )
{
var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(seconds));
wait.Until(ExpectedConditions.ElementIsVisible(by));
} /// <summary>
/// 强制让webdriver等待,直到当前的浏览器title包含指定的字符串
/// </summary>
public static void WaitTitleContains(this IWebDriver webDriver, string title, int seconds = )
{
var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(seconds));
wait.Until(ExpectedConditions.TitleContains(title));
} /// <summary>
/// 强制让webdriver等待,直到当前的浏览器title与给定读的title一致
/// </summary>
public static void WaitTitleIs(this IWebDriver webDriver, string title, int seconds = )
{
var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(seconds));
wait.Until(ExpectedConditions.TitleIs(title));
} /// <summary>
/// Executes JavaScript in the context of the currently selected frame or window.
/// </summary>
/// <param name="webDriver">IWebDriver实例</param>
/// <param name="jsCode">js代码(最好的web里面先执行一次,确保正确性)</param>
public static void ExecJavascript(this IWebDriver webDriver, string jsCode)
{
((IJavaScriptExecutor)webDriver).ExecuteScript(jsCode);
}
Selenium 脚本稳定性问题的更多相关文章
- Selenium执行测试脚本稳定性的一些经验分享交流
Selenium执行测试脚本稳定性的一些经验分享交流 公司的自动化WEB测试框架IATA已上线运行了一段时间,期间发现一些脚本稳定性的问题,与大家分享一下. CASE执行游览器:ie firefox ...
- Jenkins调度Selenium脚本不能打开浏览器解决办法
前提:在Myeclipse里面可以启动起来浏览器,在Jenkins中不能启动浏览器 原因:以程序的方式安装了jenkins,jenkins就成了windows的一个服务了,默认是设置为自动启动的如下图 ...
- Jenkins怎么安装?Jenkins控制台输出乱码怎么处理?Jenkins执行selenium脚本时浏览器不显示怎么处理?
今天我们来看一看Jenkins的安装. 首先我们看一下Jenkins是什么,能够干什么.Jenkins呢是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开 ...
- RobotFramework+Selenium如何提高脚本稳定性
通过RF来跑selenium的脚本,正常运行一遍都没有问题,但如果要多次运行,提高脚本的稳定性,那么应该如何做呢? 当然有时候最简单最简单的方法就是直接通过sleep来等待,虽然简单粗暴,但会带来 ...
- Pyinstaller打包Selenium脚本为exe文件执行问题
由于同事辞职,许多运维工具的维护工作就交到我这里处理了,运维居然没人会Python脚本! 用Selenium编写的一个爬虫脚本cctv.py,需要给不懂软件的人运行.为了不让他去搭建,安装各种包,库, ...
- linux + docker + selenium grid 实现分布式执行selenium脚本
Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...
- jenkins调度selenium脚本不打开浏览器解决办法
原文地址: http://blog.csdn.net/achang21/article/details/45096003 The web browser doesn't show while run ...
- 通过Headless模式执行selenium脚本
我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话) Chrome Headless模式 Python Sele ...
- 怎么提高selenium脚本的自动化执行效率?
1.使用配置更高的电脑,选择更快的网络环境:2.使用效率更高的语言,比如 java 比 python,这种方案可行性不高:3.能直接访问网址的,就不要一步一步点击:4.不要盲目增加 sleep,尽量使 ...
随机推荐
- List和ArrayList,LinkList的区别
接口 List<E> 是一个接口: ArrayList<E> 是一个类:是一个实现了List接口的类,因此可以List里面定义的所有的方法都实现了. 1.ArrayList是实 ...
- android使用adb installapk出现can't find **.apk to install
1. 有时候我们需要在使用ADT命令的adb安卓外部命令的时候出现下面的问题 出现上面的问题,其实是我们的apk方的文件不对,具体是什么问题怎么改路径我就没有深入研究了,.我查阅了好多资料才发现并不是 ...
- c语言学习之基础知识点介绍(五):关系运算式和逻辑运算式
本节主要说关系运算式和逻辑运算式. 一.关系运算式 1.等于(==):判断左边的表达式是否等于右边的表达式 2.大于(>):判断左边的表达式是否大于右边的表达式 3.大于等于(>=):判断 ...
- 停止Java线程,小心interrupt()方法
来源:http://blog.csdn.net/wxwzy738/article/details/8516253 程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决 ...
- linux下安装mysql5.6(官方文档)
Using the MySQL Yum Repository / Installing MySQL on Linux Using the MySQL Yum Repository Chapter ...
- Sublime Text 3配置LiveReload实现实时刷新
今天看到一款很强大的插件,LiveReload,实时刷新,也就是说写完html/css/js等不用再到浏览器里按F5啦,在Ctrl+S时浏览器会自动刷新,是不是想想都很爽... Chrome:(据说支 ...
- Fast Report Data Filter
使用Data Filter两种方式:一种是 直接在Filter 属性里写表达式 ,另外一种就是在beforePrint 事件里写方法. 今天开发时遇到了一个Filter的问题,不知道是不是fast r ...
- 为什么用linear regression可以做classification
输出空间 错误衡量方式 能不能直接用linear regression for classification 当成一个分类器回传回去 heuristic(启发式的:试探) 错误衡量 complexit ...
- c、c++混编实现查询本地IP地址
一.思路 1.要想得到本地IP地址,可以通过本机名来查询,所以首先得得到本机名. 2.牵涉到IP地址,首先想到牵涉到网络协议,因此得加载套接字协议,所以先使用WSAStartup函数完成对Winsoc ...
- JavaScript 学习笔记之线程异步模型
核心的javascript程序语言并没有包含任何的线程机制,客户端javascript程序也没有任何关于线程的定义,事件驱动模式下的javascript语言并不能实现同时执行,即不能同时执行两个及以上 ...