рд╕реЗрд▓реЗрдирд┐рдпрдо: рд╕рднреА AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ AJAX рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддрд▓рд╛рдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рдПрдХ рдирд┐рдпрдорд┐рдд WEB рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реИрдВред рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрд╕ рд╕рднреА AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рдкреГрд╖реНрда рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪреЗрдХрдмреЙрдХреНрд╕ рдХрд╛ рдЪрд┐рд╣реНрди AJAX рдЕрдиреБрд░реЛрдз рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдЪреБрдирд┐рдВрджрд╛ рдХрд╛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЪрд┐рд╣реНрди рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдФрд░ рд╕рднреА рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AJAX рдЕрдиреБрд░реЛрдз рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред



рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╛рд╣рди рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдкрд╛рд╕ рдХрдИ рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВред



рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рдирд┐рд╢рд╛рди рдХреЗ рдмрд╛рдж рд╕реЛ рдЬрд╛рдУред

рдпрд╣ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдФрд░, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рд╣рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ AJAX рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдкрд░реНрдпрд╛рдкреНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 5 рд╕реЗрдХрдВрдбред рдЬрдм 5 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдореНрдореАрджреЗрдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд▓рдЧреЗрдВрдЧреЗ, рддрдм рднреА рдЬрдм рд╕рднреА AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрднреА-рдХрднреА рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ, AJAX рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп 5.2 рд╕реЗрдХрдВрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдЭреВрдареА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓рддрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреА, рдЬреЛ рдЦрд░рд╛рдм рднреА рд╣реИред



рд╡реЗрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рд╕реЗрд▓реЗрдирд┐рдпрдо # рдЗрд╢реНрдпреЛрд░реЗрдВрдЯ рд░рд┐рдЯрд░реНрди рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рд╕рд╣реА рди рд╣реЛред

рдпрд╣ рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВред рд╕реЗрд▓реЗрдирд┐рдЕрдо # WaitForCondition рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рдмрдЬрд╛рдп рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рддрддреНрд╡ рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред



рдХрд┐рд╕реА рддрд░рд╣, рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЪрдпрди рдХрд░реЗрдВред

рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХрд╛рдлреА рдмрд╣реБрдореБрдЦреА рдФрд░ рд╕рд░рд▓ рд╣реИред



AJAX рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ WEB рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (jQuery, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, Dojo, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдорд╛рдирдХ API рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рдЕрдореВрд░реНрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддреЗ рд╣реИрдВред



рд╕реЗрд▓реЗрдирд┐рдпрдо рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕рднреА AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕реАрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреИрд╕реЗ рдХрд░реЗрдВред рдорд╛рдирдХ рдПрдкреАрдЖрдИ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рд░ рдЬрдЧрд╣ рдпрд╣ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред JQuery рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рднреА AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

/** * Waits for all active jQuery AJAX requests to finish. * * @param timeout Timeout in milliseconds. * @throws SeleniumError If timeout is reached. */ Selenium.prototype.doWaitForJqueryAjaxRequests = function(timeout) { return Selenium.decorateFunctionWithTimeout(function() { return selenium.browserbot.getUserWindow().jQuery.active == 0; }, timeout); };
      
      



рдпрд╣рд╛рдВ рд╣рдо рд╕реЗрд▓реЗрдирд┐рдпрдо # рдбреЗрдХреЛрд░рдлрд╝рдВрдХреНрд╢рдирд╡рд┐рдердЖрдЙрдЯрдЖрдЙрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрдд (рд╕рдХреНрд░рд┐рдп AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╣реИ) рдХреЛ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдордп-рд╕реАрдорд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдпрд╣ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реА рд╣реЛ рдЬрд╛рдПрдЧреА, рдЕрдиреНрдпрдерд╛, рдПрдХ рд╕реЗрд▓реЗрдирд┐рдпрдоError рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред ред



рдЕрдЧрд░ рд╣рдо рдореЗрдЯрд╛-рднрд╛рд╖рд╛ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓реЗрдЧрд╛:

  1. рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ AJAX рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдЙрдкрдпреЛрдЧ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред


рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрд░рд╕реА рдпрд╛ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрдИрдбреАрдИ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк DefaultSelenium # setExtensionJs рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛрдб рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдпрд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (jQuery, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, рдФрд░ Dojo рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд) рд╣реИ:

 /** * Waits for all active AJAX requests to finish during specified timeout. Works only for AJAX requests which are * instantiated using one of the following frameworks: jQuery, Prototype, Dojo. Don't work (immediately returns without * any errors) if standard AJAX API or one of other frameworks is used to send XML HTTP request. * * @param timeout Timeout in milliseconds. * @throws SeleniumError If timeout is reached. */ Selenium.prototype.doWaitForAjaxRequests = function(timeout) { return Selenium.decorateFunctionWithTimeout(function() { var userWindow = selenium.browserbot.getUserWindow(); var isJqueryComplete = typeof(userWindow.jQuery) != 'function' || userWindow.jQuery.active == 0; var isPrototypeComplete = typeof(userWindow.Ajax) != 'function' || userWindow.Ajax.activeRequestCount == 0; var isDojoComplete = typeof(userWindow.dojo) != 'function' || userWindow.dojo.io.XMLHTTPTransport.inFlight.length == 0; return isJqueryComplete && isPrototypeComplete && isDojoComplete; }, timeout); };
      
      





рдпрджрд┐ рд╕реЗрд▓реЗрдиреАрдЬрд╝ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирдИ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рдХрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

 import com.thoughtworks.selenium.CommandProcessor; import com.thoughtworks.selenium.DefaultSelenium; public class CustomSelenium extends DefaultSelenium { public CustomSelenium(String serverHost, int serverPort, String browserStartCommand, String browserURL) { super(serverHost, serverPort, browserStartCommand, browserURL); } public CustomSelenium(CommandProcessor processor) { super(processor); } /** * Waits for all active AJAX requests to finish during specified timeout. Works only for AJAX requests which are * instantiated using one of the following frameworks: jQuery, Prototype, Dojo. Don't work (immediately returns * without any errors) if standard AJAX API is used to send request. * * @param timeout Timeout in milliseconds. */ public void waitForAjaxRequests(final int timeout) { commandProcessor.doCommand("waitForAjaxRequests", new String[]{String.valueOf(timeout)}); } }
      
      







рдЕрдм рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рд╛ рдХреЛрдб рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

 ... selenium.check("name=enableBender"); sleep(5000); selenium.select("name=mode", "label=Kill all humans"); ...
      
      





рдЗрд╕ рдкрд░:

 ... selenium.check("name=enableBender"); selenium.waitForAjaxRequests(60000); selenium.select("name=mode", "label=Kill all humans"); ...
      
      





рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рдЧрддрд┐ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЕрд░реНрдерд╛рддред рдЕрдирд╛рд╡рд╢реНрдпрдХ рджреЗрд░реА рдХреЗ рдмрд┐рдирд╛ред



рдХреБрдЫ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдкреЗрдЬ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж AJAX рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рдВ, рдХреБрдЫ рд╣реИрдВ), рдореИрдВ рд╡реЗрдЯрдлреЛрд░рдкреЗрдЬ ToLoad, waForFrameToLoad рдФрд░ waForPorUUp рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЗрд╕рдореЗрдВ рдЕрдВрддрд┐рдо рдХреЙрд▓ рдХреЗ рд╕рд╛рде waForAjaxRequests рдЬреЛрдбрд╝рдХрд░, рддрд╛рдХрд┐ рдЯреНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рдЯреНрд╡рд┐рд╕реНрдЯ рди рдХрд░реЗрдВред



рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдорд╛рдирдХ рдПрдкреАрдЖрдИ рдореЗрдВ AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрд╡рд░реЛрдзрдХреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реАрдзреЗ рдорд╛рдирдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдЧрдВрднреАрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдирдХ рдПрдкреАрдЖрдИ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдЗрд╕ рд░реИрдкрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред



All Articles