在使用 WatiN 时禁用 IE 可见性

本文关键字:IE 可见性 WatiN | 更新日期: 2023-09-27 18:33:56

我使用 watin,因为我需要在后台打开一些用户需要支持 Javascript 的网站。我不知道WatiN是否最适合这项工作,但目前需要很长时间才能看到Internet Explorer。我需要在使用WatiN时禁用弹出Internet Explorer。用户不需要看到网站的打开情况。在使用 WatiN 访问网站时是否可以在不向用户显示的情况下访问网站,或者我应该使用另一种在客户端支持 JS 的替代方案?我目前的代码;

    public static void visitURL()
       {
           IE iehandler = new IE("http://www.isjavascriptenabled.com");
           if (iehandler.ContainsText("Yes"))
               Console.WriteLine("js on");
           else
               Console.WriteLine("js off");
       }

在使用 WatiN 时禁用 IE 可见性

WatIn.Core.IE 类有一个 Visible 属性,你可以像这样初始化对象:
new WatiN.Core.IE() { Visible = true }

这样,IE在创建时只会在屏幕上闪烁,然后它将被隐藏。稍后您可以使用 WatiN.Core.IE 类的 ShowWindow 方法控制 IE 的可见性 - 我的意思是如果需要,您可以在屏幕上显示它,或者您可以再次隐藏。

我完全使用这个技巧(隐藏IE)来编写在隐藏的IE窗口中运行的单元测试(使用 https://github.com/o2platform/FluentSharp_Fork.WatiN)

例如,这是我如何创建一个帮助程序类(具有可配置的隐藏值)

    public IE_TeamMentor(string webRoot, string path_XmlLibraries, Uri siteUri, bool startHidden)
    {
        this.ie                = "Test_IE_TeamMentor".popupWindow(1000,700,startHidden).add_IE();            
        this.path_XmlLibraries = path_XmlLibraries;
        this.webRoot           = webRoot;
        this.siteUri           = siteUri;
    }

然后由此测试消耗:

   [Test] public void View_Markdown_Article__Edit__Save()
    {
        var article          = tmProxy.editor_Assert()                       // assert the editor user (or the calls below will fail due to security demands)
                                      .library_New_Article_New()             // create new article
                                      .assert_Not_Null(); 
        var ieTeamMentor     = this.new_IE_TeamMentor_Hidden();
        var ie               = ieTeamMentor.ie; 
        ieTeamMentor.login_Default_Admin_Account("/article/{0}".format(article.Metadata.Id));               // Login as admin and redirect to article page
        var original_Content = ie.element("guidanceItem").innerText().assert_Not_Null();                    // get reference to current content
        ie.assert_Has_Link("Markdown Editor")       
          .link           ("Markdown Editor").click();                                                      // open markdown editor page          
        ie.wait_For_Element_InnerHtml("Content").assert_Not_Null()
          .element                   ("Content").innerHtml()
                                                .assert_Is(original_Content);                               // confirm content matches what was on the view page
        var new_Content      = "This is the new content of this article".add_5_RandomLetters();             // new 'test content'
        ie.element("Content").to_Field().value(new_Content);                                                // put new content in markdown editor
        ie.button("Save").click();                                                                          // save 
        ie.wait_For_Element_InnerHtml("guidanceItem").assert_Not_Null()        
          .element                   ("guidanceItem").innerHtml()
                                                     .assert_Is("<P>{0}</P>".format(new_Content));         // confirm that 'test content' was saved ok (and was markdown transformed)            
        ieTeamMentor.close();
    }

以下是一些可以帮助您了解我如何使用它的帖子:

  • https://github.com/TeamMentor/Dev/tree/master/Source_Code/TM_UnitTests/TeamMentor.UnitTests.QA/TeamMentor_QA_IE
  • http://blog.diniscruz.com/2014/07/how-to-debug-cassini-hosted-website-and.html
  • http://blog.diniscruz.com/2014/07/using-watin-and-embedded-cassini-to-run.html
  • http://blog.diniscruz.com/search/label/WatiN