2016-07-28 5 views
-1

Ich arbeite an der Automatisierung einer Website, in der ich einige Aktionen mit Benutzer A dann Benutzer B muss die gleiche Genehmigung durchführen müssen.Selen | Attach bereits geöffneten Browser (IE) zu Webtreiber

Standardmäßig nimmt die Web-Anwendung Anmeldeinformationen von der Windows-Anmeldung selbst, da es keine Anmeldeseite dafür gibt.

Also was ich getan habe war, ich automatisierte alle Aktionen von Benutzer A. Jetzt, um die Aktion von Benutzer B durchzuführen, erstellte ich ein .vbs Dienstprogramm, das ich in meinem Java-Code aufrufen, öffnet dieses Dienstprogramm einen Webbrowser und Anmeldung in der Anwendung mit Benutzer B (Ich verwendete Shell-Skripts in Vbs für diese). Jetzt habe ich zwei Web-Browser einen, der von Webdriver geöffnet wird (Auf denen ich eine Aktion mit Benutzer A durchgeführt) und die andere, die durch das VBS-Dienstprogramm geöffnet wurde (ich muss einige Maßnahmen in diesem Browser durchführen) und seit meinem zweiter Browser wird nicht von Webdriver geöffnet Ich suche einen Weg, um es an Webdriver anzuschließen, so dass ich einige Aktionen darauf ausführen kann & Genehmigung der Anfrage erstellt von Benutzer A.

Zusätzliche Informationen: Ich muss dies in IE durchführen, da dies Client-Anforderung ist. Ich benutze Java für Selen.

+1

Warum öffnest du nicht einen neuen Webdriver und stattdessen einen Vbs? – Madhan

Antwort

0

Nachdem ich Ihre Frage gelesen habe, glaube ich, dass Sie Ihr Problem falsch angehen. Da ich nicht sagen kann, um welche Art von Authentifizierung es sich in Ihrem Browser handelt, kann ich Ihnen ein Formular und HTTP 401 zeigen, die wahrscheinlich die allgemeinen Szenarien abdecken. Wenn Sie ein anderes Beispiel benötigen, lassen Sie es uns wissen, wenn Sie sich anders authentifizieren möchten.

Wenn ich Ihre Anfrage falsch gelesen habe und Sie tatsächlich auf eine manuell gestartete Instanz eines Browsers zugreifen möchten, die nicht standardmäßig bereitgestellt wird, müssen Sie wirklich kreativ werden. Unabhängig davon wird diese Frage beantwortet here.

Jedoch, soweit meine Empfehlung geht, würde ich sehr empfehlen, dass Sie dieses vb-Skript/manuellen Browser loswerden, wenn möglich. Wenn Sie sich über Ihren Browser authentifizieren können, können Sie dies über Selen tun. Hier sind einige Beispiele:

Note, this is a good guide on how to use the InternetExplorerDriver

Szenario 1: Verwenden eines HTML-Formular Beispiel-HTML-Code:

<form> 
    <table id="credentials_table"> 
    <tbody> 
    <tr> 
     <td class="credentials_table_label_cell"><label for="username" id="label_input_1">Username</label></td> 
     <td class="credentials_table_field_cell"><input class="credentials_input_text" value="" id="username" autocomplete="off" autocapitalize="off" type="text"></td> 
    </tr> 
    <tr> 
     <td class="credentials_table_label_cell"><label for="password" id="label_input_2">Password</label></td> 
     <td class="credentials_table_field_cell"><input class="credentials_input_password" value="" id="password" autocomplete="off" autocapitalize="off" type="password"></td> 
    </tr> 
    <tr id="submit_row"> 
     <td class="credentials_table_field_cell"><input class="credentials_input_submit" value="Logon" type="submit"></td> 
    </tr> 
    </tbody></table> 
</form>  

Probe Selenim-Code Login:

private WebDriver driverForA = new InternetExplorerDriver(); 
private WebDriver driverForB = new InternetExplorerDriver(); 

@After 
public void after() { 
    driverForA.close(); 
    driverForB.close(); 
} 

@Test 
public void testADoesThisAndBDoesThat() { 

    driverForA.get("http://my.login.url"); 
    final WebElement usernameInput = driverForA.findElement(By.id("username")); 
    final WebElement passwordInput = driverForA.findElement(By.id("password")); 
    final WebElement submitButton = driverForA.findElement(By.xpath("//input[@type='submit' and @value='Logon']")); 
    // perform the login stuff 
    clearKeysAndSetValue(usernameInput, "Joe"); 
    clearKeysAndSetValue(passwordInput, "superSecret"); 
    submitButton.click(); 
    // navigate to other pages and do things 

    driverForB.get("http://my.approval.page"); 
    final WebElement approveButton = driverForB.findElement(By.id("approval_Button")); 
    approveButton.click(); 

} 

private void clearKeysAndSetValue(final WebElement element, final String valueToSet) { 
    element.clear(); 
    element.sendKeys(valueToSet); 
} 

Scenario 2: Using HTTP 401

private final WebDriver driverForA = new InternetExplorerDriver(); 
private final WebDriver driverForB = new InternetExplorerDriver(); 

@After 
public void after() { 
    driverForA.close(); 
    driverForB.close(); 
} 

@Test 
public void testADoesThisAndBDoesThatHttpBasic() { 
    // authenticate as a 
    WebDriverWait wait = new WebDriverWait(driverForA, 5);  
    Alert alert = wait.until(ExpectedConditions.alertIsPresent());  
    alert.authenticateUsing(new UserAndPassword("Joe", "superSecret")); 
    // navigate to other pages and do things 

    driverForB.get("http://my.approval.page"); 
    final WebElement approveButton = driverForB.findElement(By.id("approval_Button")); 
    approveButton.click(); 
}