Selenium 脚本稳定性问题

系统 1632 0

 

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

elementNotVisibleException was unhandled by user code。

经过询问大侠,说我的脚本不够健全,也就是稳定性的问题,需要增加一些判断等待,那需要封装一些等待方法

 

        
          public
        
        
          static
        
        
          void
        
         WaitUnit<T>(
        
          this
        
         IWebDriver webDriver, Func<IWebDriver, T> func, 
        
          int
        
         seconds = 
        
          20
        
        
          )

        {

            
        
        
          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 = 
        
          20
        
        
          )

        {

            
        
        
          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 = 
        
          20
        
        
          )

        {

            
        
        
          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 = 
        
          20
        
        
          )

        {

            
        
        
          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 = 
        
          20
        
        
          )

        {

            
        
        
          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 脚本稳定性问题


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论