2016-04-24 3 views
0

Я использую селен с C# (браузер по умолчанию - FireFoX).Selenium - Как обрабатывать всплывающее окно с прослушивателем событий (C#)

Есть некоторые сайты, которые всплывают после неизвестного времени (если есть).

Я не могу использовать wait или sleep, потому что не знаю, на каком экране появится всплывающее окно. Использование «try-Catch» на каждой странице не очень умно ...

Решение, о котором я думал, заключается в использовании прослушивателя событий для прослушивания всплывающих окон, а затем он нажимает кнопку «X» , Конечно, слушатель должен быть в потоке, и каждый тест может иметь массив потоков, который получает список событий и xpath/ID.

Кто-нибудь сделал такие вещи? Есть ли какой-нибудь пример/статья/учебник, чтобы помочь мне в этом?

10X,

Gil

ответ

0

Думая о старом китайском proverb, когда сталкиваются с такими вопросами, я иду в SeleniumHQ хранилище GitHub и посмотреть на tests.

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

0

я бы просто переопределить FirefoxDriver автоматически принимать предупреждения и отключения предупреждения исключение:

class FirefoxDriverEx : FirefoxDriver { 

    private static DesiredCapabilities Capabilities() { 
     var capa = DesiredCapabilities.Firefox(); 
     capa.SetCapability(CapabilityType.UnexpectedAlertBehavior, "accept"); 
     return capa; 
    } 

    public FirefoxDriverEx() 
     : base(Capabilities()) { } 

    protected override Response Execute(string driverCommandToExecute, Dictionary<string, object> parameters) { 
     try{ 
      return base.Execute(driverCommandToExecute, parameters); 
     } catch (UnhandledAlertException) { 
      return base.Execute(driverCommandToExecute, parameters); 
     } 
    } 
} 

Вот пример использования:

var driver = new FirefoxDriverEx(); 
driver.Navigate().GoToUrl("http://the-internet.herokuapp.com/javascript_alerts"); 
driver.FindElementByXPath("//button[.='Click for JS Alert']").Click(); 
string text = driver.FindElementById("result").Text; 
+0

Круто. Я вижу только * UnexpectedAlertBehavior * в библиотеках cel и javascript selenium. – MikeJRamsey56

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