Обработка всплывающих окон безопасности во время загрузки веб-страницы с помощью Selenium и AutoIt - PullRequest
1 голос
/ 03 ноября 2011

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

Я написал следующий скрипт, но он не переходит к следующей строке кода после selenium.open("/faces/Main"); и, наконец, завершается ошибкой с сообщением об ошибке тайм-аута по умолчанию.

Результат консоли:

Timeout 30000ms

Селен1 код:

package first;

import java.io.IOException;

import com.thoughtworks.selenium.*;
import org.testng.annotations.*;
import static org.testng.Assert.*;



public class Auth_assign {

private Selenium selenium;

   @BeforeClass
   public void setup() 
   {             
          selenium = new DefaultSelenium("localhost",4444, "*firefox C:/Program Files/FF 7.1/firefox.exe", "http://qa02.mydomain.com");
          selenium.start();
          selenium.windowMaximize();

   }

   @AfterClass(alwaysRun=true) 
   public void stopSelenium() {  
   //this.selenium.stop(); 
   } 




   @Test (description="Authentication pop-up")     
          public void Auth_popup() throws Exception
          {


          System.out.print("Unity page\n ");
          try
          {
          selenium.open("/faces/Main");
          Thread.sleep(10000);

          System.out.print("Window \n ");


          String[] dialog;

          dialog = new String[] { "Login_Dialog.exe","Authentication Required","test46#", "test123"};
          System.out.print( dialog);
          Runtime.getRuntime().exec(dialog);


          selenium.select("//select[@id='qryId1::criteriaItems::content']", "Customer Name");
          selenium.type("//input[@id='qryId1:criterionValue::content']", "Search Company");
          selenium.click("//a[@id='qryId1::search_icon']");
          selenium.waitForPageToLoad("3000");

          selenium.click("//a[@id='t1:0:gl1']");


          } catch (SeleniumException ex) {
        System.err.println(ex.getMessage());
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }


   }      

Login.exe code

;~ ------------------------------------------------------------
;~ Login_dialog.au3
;~ To handle the Authentication Dialogbox
;~ Create By: Gaurang Shah
;~ Usage: Login_dialog.au3 "Dialog Title" "User Name" "Password"
;~ ------------------------------------------------------------
AutoItSetOption("WinTitleMatchMode","2")

if $CmdLine[0] < 3 then
msgbox(0,"Error","Supply all the Arguments, Dialog title User Name, Password")
Exit
EndIf

WinWait($CmdLine[1]) ; match the window with substring
$title = WinGetTitle($CmdLine[1]) ; retrives whole window title
ControlSend($title,"","Edit2",$CmdLine[2]);Sets User Name
ControlSend($title,"","Edit3",$CmdLine[3]);Sets Password
ControlClick($title,"","OK");

Ответы [ 3 ]

0 голосов
/ 07 ноября 2011

Вы можете предоставить учетные данные в базовом URL. Например, если ваш базовый URL http://www.mysite.com/ тогда вы можете предоставить его как http://user:pwd@www.mysite.com/

0 голосов
/ 09 ноября 2011

Попробуйте вызвать свой скрипт autoit до появления всплывающего окна. Иначе ты никогда не вернешь свой контроль. Я имею в виду перед вашей главной страницей selenium.open ("/ Faces / Main");

0 голосов
/ 04 ноября 2011

Вы можете передать имя пользователя и пароль в заголовке авторизации, это может помочь: Как я могу отправлять заголовки HTTP Basic Authentication в Android?

...