2016-09-05 8 views
5

Я использую Watin-библиотеку в приложении Windows Forms. Для того, чтобы скрыть браузер Я использую эту инструкцию:Скрытие всплывающих окон браузера - Watin

Settings.Instance.MakeNewIeInstanceVisible = false; 

Однако это не скрывает всплывающие окна (при моделировании нажмите на элемент, который открывает всплывающее окно). Есть ли способ скрыть их?

+0

Какие всплывающие окна? Сообщения в виде предупреждений и подтверждений? или открываются новые окна с помощью 'window.open'? –

+0

новые окна на самом деле – Kira

+0

Я получил эту работу, введя несколько javascript на страницу, загруженную Watin. Пожалуйста, взгляните на мой ответ. –

ответ

0

Я проверил released notes и нашел это:

По тестам WatiN по умолчанию делает созданные Explorer, экземпляры Интернета виден пользователю. Вы можете запустить свой тест невидимым, изменив следующую настройку. Имейте в виду, что HTMLDialogs и любые всплывающие окна будут показаны, даже если вы установите для этого параметра значение false (это по умолчанию поведение Internet Explorer, который в настоящее время не может быть подавлен).

IE.Settings.MakeNewIeInstanceVisible = false; // default is true 

С WatIN не обновлялся с 2011 года, я думаю, вы бы не ожидать каких-либо новых функций поддержки, что вы хотите.

Я не знаю, могло ли это быть обходным решением, но если эти всплывающие окна не являются important, почему бы просто не заблокировать все всплывающие окна?

How to turn off popup blocker through code in Watin?

HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_WEBOC_POPUPMANAGEMENT 
Value = 0 for Off 
Value = 1 for On 
+0

Они действительно важны:/ – Kira

+0

@HediNaily Ну, то, что вы хотите, не предоставляется ими. Я думаю, возможно, вы должны изменить свою библиотеку. –

0

Вы можете сделать это программно, запустив некоторый яваскрипт кода и сделать window.open функцию ничего не делать!

Пример

Here является тестовой страницы я сделал, что имеет очень простую форму и, когда пользователь нажимает на кнопку Sum, она подводит итог numA + numB и отображает результат внутри <span id="result"></span> элемента , После обновления текста результата он открывает всплывающее окно, вызывая window.open. Для того, чтобы сделать это всплывающее окно исчезнет, ​​мы должны устранить window.open функции:

window['open'] = function() { return false; } 

Чтобы сделать это с помощью Watin, мы должны использовать функцию Eval и ввести яваскрипт кода вроде этого:

browser.Eval("window['open'] = function() { return false; }"); 

Тогда все всплывающие окна исчезнут только для загрузки этой страницы, и у нас есть желаемый результат.

Образец C# код

private void buttonPopupdEnabled_Click(object sender, EventArgs e) 
{ 

    WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false; 
    IE ie = new IE(); 

    ie.GoTo("http://zikro.gr/dbg/html/watin-disable-popups/"); 
    ie.Eval("window['open'] = function() { return false; }"); 
    ie.TextField(Find.ById("numA")).TypeText("15"); 
    ie.TextField(Find.ById("numB")).TypeText("21"); 
    ie.Button(Find.ById("sum")).Click(); 
    string result = ie.Span(Find.ById("result")).Text; 
    ie.Close(); 

    labelResult.Text = String.Format("The result is {0}", result); 
} 

Программа работает, прежде чем Javascript инъекции (Popup показывает вверх)

Popup without javascript injection

Программа работает после яваскрипта инъекции (Popup уходит)

enter image description here