运行一个星期前升至更久前的脚本,,,出现如下错误提示

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 脚本稳定性问题的更多相关文章

  1. Selenium执行测试脚本稳定性的一些经验分享交流

    Selenium执行测试脚本稳定性的一些经验分享交流 公司的自动化WEB测试框架IATA已上线运行了一段时间,期间发现一些脚本稳定性的问题,与大家分享一下. CASE执行游览器:ie firefox ...

  2. Jenkins调度Selenium脚本不能打开浏览器解决办法

    前提:在Myeclipse里面可以启动起来浏览器,在Jenkins中不能启动浏览器 原因:以程序的方式安装了jenkins,jenkins就成了windows的一个服务了,默认是设置为自动启动的如下图 ...

  3. Jenkins怎么安装?Jenkins控制台输出乱码怎么处理?Jenkins执行selenium脚本时浏览器不显示怎么处理?

    今天我们来看一看Jenkins的安装. 首先我们看一下Jenkins是什么,能够干什么.Jenkins呢是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开 ...

  4. RobotFramework+Selenium如何提高脚本稳定性

     通过RF来跑selenium的脚本,正常运行一遍都没有问题,但如果要多次运行,提高脚本的稳定性,那么应该如何做呢?  当然有时候最简单最简单的方法就是直接通过sleep来等待,虽然简单粗暴,但会带来 ...

  5. Pyinstaller打包Selenium脚本为exe文件执行问题

    由于同事辞职,许多运维工具的维护工作就交到我这里处理了,运维居然没人会Python脚本! 用Selenium编写的一个爬虫脚本cctv.py,需要给不懂软件的人运行.为了不让他去搭建,安装各种包,库, ...

  6. linux + docker + selenium grid 实现分布式执行selenium脚本

    Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...

  7. jenkins调度selenium脚本不打开浏览器解决办法

    原文地址: http://blog.csdn.net/achang21/article/details/45096003 The web browser doesn't show while run ...

  8. 通过Headless模式执行selenium脚本

    我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话) Chrome Headless模式 Python Sele ...

  9. 怎么提高selenium脚本的自动化执行效率?

    1.使用配置更高的电脑,选择更快的网络环境:2.使用效率更高的语言,比如 java 比 python,这种方案可行性不高:3.能直接访问网址的,就不要一步一步点击:4.不要盲目增加 sleep,尽量使 ...

随机推荐

  1. PHP 进制问题

    PHP有一些函数提供进制之间的转化问题 在Math函数中有一部分: decbin() - 十进制转换为二进制 bindec() — 二进制转换为十进制 octdec() - 八进制转换为十进制 hex ...

  2. SET NOCOUNT 的意义.

    SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息. 语法 SET NOCOUNT { ON | OFF } 当 SET NOCOUNT 为 ON 时, ...

  3. 【基础】Oracle 表空间和数据文件

    多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...

  4. (七)Struts2 验证框架

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 验证简介 Struts2 基于Struts2 拦截器,为 ...

  5. 转: angularjs 指令中动态编译的方法(适用于有异步请求的情况) 内嵌指令无效

    angular的坑很多 例子: 在directive的link中有一个$http请求,当请求完成后根据返回的值动态做element.append('......');这个操作, 能显示没问题,可问题是 ...

  6. hdoj (1162) 最小生成树

    Problem B Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  7. mysql建表出现Timestamp错误

    mysql建表时如果有两个或以上的字段为Timestamp,那么可能会出现如下错误: Incorrect table definition; there can be only one TIMESTA ...

  8. CSS+Javascript的那些框架

    CSS CSS 制作框架 SASS http://www.oschina.net/p/sass Blueprint  http://www.oschina.net/p/blueprintcss Ela ...

  9. etTimeout与setInterval方法的区别

    etTimeout与setInterval方法的区别 setTimeout()用于设定在指定的时间之后执行对应的函数或代码.,在全局作用域下执行 setTimeout(code,time[,args… ...

  10. ARM920T系统总线时序分析

    一.系统总线时序图 二.分析 第一个时钟周期开始,系统地址总线给出需要访问的存储空间地址. 经过Tacs时间后,片选信号也相应给出,并且锁存当前地址线上地址信息. 再经过Tcso时间后,处理器给出当前 ...