2014-12-11 2 views
1

Я использую watin, потому что мне нужно открыть некоторые веб-сайты в фоновом режиме, для которых пользователю необходимо поддерживать Javascript. Я не знаю, является ли WatiN лучшим для этой работы, но на данный момент это занимает очень много времени, пока Internet Explorer не станет видимым. Мне нужно отключить всплытие Internet Explorer при использовании WatiN. Пользователю не нужно видеть открытие сайтов. Возможно ли использовать WatiN для посещения веб-сайта, не показывая его пользователю, или я должен использовать другую альтернативу, которая поддерживает JS на стороне клиента? Мой код на данный момент;отключить видимость IE при использовании WatiN

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"); 
     } 
+0

является целью для извлечения данных из другого сайта/URL или для проверки яваскрипта доступности для ваших собственных целей? Если предыдущий - см. Этот вопрос/ответ http://stackoverflow.com/questions/21255725/webrequest-equivalent-to-curl-command, если позже - подумайте о включении «noscript» контента, который советует пользователю, чтобы ваше приложение требовало JS –

+0

Мне просто нужно посетить веб-страницы не более. На этих веб-сайтах есть некоторый сценарий анализа, например, аналитика Google или пивик. Мне просто нужно иметь возможность запускать локальные js, чтобы они посчитали мой визит. – dehner

+0

проверить этот ответ - у вас есть несколько вариантов для создания браузеров без браузера C# http://stackoverflow.com/questions/10161413/headless-browser-for-c-sharp-net –

ответ

1

Класс WatIn.Core.IE имеет Видимый свойство, вы можете инициализировать объект так:
new WatiN.Core.IE() { Visible = true }

Таким образом, IE будет только мигать на экране, когда он создан, а затем он будет скрыт. Вы можете позже контролировать видимость IE с помощью метода ShowWindow класса WatiN.Core.IE - я имею в виду, что вы можете показать его на экране, если вам нужно, или вы можете снова спрятаться.

1

Я использую именно этот трюк (сокрытия IE) для написания UnitTests (с использованием https://github.com/o2platform/FluentSharp_Fork.WatiN), которые работают в скрытом окне IE

Например here is how создать вспомогательный класс (с настраиваемым скрытым значением)

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; 
    } 

, который затем потребляется this test:

[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(); 
    } 

Вот несколько сообщений, которые могли бы поможет вам понять, как я использую его:

Смежные вопросы