2017-07-06 69 views
1

Webアプリケーションを自動化しようとしています。セレン2.0 [webdriver + java]。ウェブアプリケーションは現在、私たちのローカルネットワーク上のUATサーバにデプロイされています。テストの実行開始時に、Chromeインスタンスのプロキシ認証の詳細を手動で入力する必要があります。スタックオーバーフローで提供されるすべてのソリューションを試しましたが、依然として認証メッセージが飛び出します。 Chromeブラウザ用のseleniumWebdriverでプロキシ認証を設定する方法

enter image description here

この

は私が私のドライバ初期化処理

パッケージcom.misyn.ess.uiで使用しているコードです。

import java.util.Arrays; 
import org.openqa.selenium.Proxy; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.remote.DesiredCapabilities; 

/** 
* 
* @author User 
*/ 
public class DriverClass { 

    private String baseUrl; 
    private String driverPath; 
    private String driverName; 
    private static WebDriver driver; 
    private static DriverClass driverClass; 

     private DriverClass() { 
      try { 
       baseUrl = "http://192.168.0.10:8282/ess"; 
       driverPath = "E:\\Work_Folder\\SelTools\\chromedriver.exe"; 
       driverName = "webdriver.chrome.driver"; 

       //Set the location of the ChromeDriver 
      System.setProperty(driverName, driverPath); 
      //Create a new desired capability 
      DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
      // Create a new proxy object and set the proxy 
      Proxy proxy = new Proxy(); 
      proxy.setHttpProxy("192.168.0.200:3128"); 
      proxy.setSocksUsername("avishka"); 
      proxy.setSocksPassword("12345678"); 
      //Add the proxy to our capabilities 
      capabilities.setCapability("proxy", proxy); 
      //Start a new ChromeDriver using the capabilities object we created and added the proxy to 
      driver = new ChromeDriver(capabilities); 

      //Navigation to a url and a look at the traffic logged in fiddler 
      driver.navigate().to(baseUrl); 


    //   System.setProperty(driverName, driverPath); 
    //   driver = new ChromeDriver(); 
    //   driver.get(baseUrl); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

、誰もがすべてのヘルプははるかにappreciated.Thanks

だろう、私は手動でポップアップ(認証)の詳細を入力するよりも、アプリケーション自体から、このプロキシユーザー名とパスワードの事を与えるためにどのように解決策を与えることができます

現在答え一つは、それが今の実装では、唯一のInternetExplorerDriver

のために行われているベータ版 にまだあるだけセレン3.4のよう

のためであります

ここでは、WebブラウザとしてSelenium 3.0とGoogle Chromeを使用しています。

+0

を働きました使っている? –

+0

バージョン59.0.3071.115(公式ビルド)(64ビット)@santhoshkumar –

+0

AUTOITツールを使用する必要があると思います。 –

答えて

0

あなたはCRXとして拡張機能をダウンロード
https://chrome.google.com/webstore/detail/multipass-for-http-basic/enhldmjbphoeibbpdhmjkchohnidgnah

から拡張機能をダウンロードMultiPass for HTTP basic authentication

を経由して行うことができます。あなたはcrxとして得ることができますchrome-extension-downloader

その後、設定は簡単です。

import java.io.File; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 

/** 
* 
* @author Phystem 
*/ 
public class ChromeAuthTest { 

    WebDriver driver; 

    public ChromeAuthTest() { 
     System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); 
    } 

    private void initDriver() { 
     ChromeOptions cOptions = new ChromeOptions(); 
     cOptions.addExtensions(new File("MultiPass-for-HTTP-basic-authentication_v.crx")); 
     driver = new ChromeDriver(cOptions); 
     configureAuth(
       "https://the-internet.herokuapp.com/basic_auth", 
       "admin", 
       "admin"); 
    } 

    private void configureAuth(String url, String username, String password) { 
     driver.get("chrome-extension://enhldmjbphoeibbpdhmjkchohnidgnah/options.html"); 
     driver.findElement(By.id("url")).sendKeys(url); 
     driver.findElement(By.id("username")).sendKeys(username); 
     driver.findElement(By.id("password")).sendKeys(password); 
     driver.findElement(By.className("credential-form-submit")).click(); 
    } 

    public void doTest() { 
     initDriver(); 
     driver.get("https://the-internet.herokuapp.com/basic_auth"); 
     System.out.println(driver.getTitle()); 
     driver.quit(); 
    } 

    public static void main(String[] args) { 
     new ChromeAuthTest().doTest(); 
    } 
} 

私はsample siteをテストに使用しました。

は、configure認証機能では、あなたのURL、ユーザ名とパスワードを入力して、プロキシの設定がプロキシ認証に値を渡すために必要な機能を追加されている

+0

これは直接接続で試しましたか? –

+0

私がアクセスしようとしているアプリケーションは "192.168.0.10:8282/ess"ですが、私のプロキシ認証ポップアップは、ネットワークのプロキシである "192.168.0.200:3128"から来ます。 **あなたのソリューションを試しました** これはコンソール java.lang.IllegalArgumentException:C:¥Users¥User¥Documents¥NetBeansProjects¥Ess¥MultiPass for HTTP-basic-authentication_vでこれを示しています。 crxが存在しません。 ' ** configureAuth()**を使用しました。 –

+0

あなたはcrxファイルをダウンロードする必要があります。 – Madhan

0
public class DriverClass { 

    private String baseUrl; 
    private String driverPath; 
    private String driverName; 
    private static WebDriver driver; 
    private static DriverClass driverClass; 

    public DriverClass() { 
     try { 
      baseUrl = "http://192.168.0.10:8282/ess"; 
      driverPath = "E:\\Work_Folder\\SelTools\\chromedriver.exe"; 
      driverName = "webdriver.chrome.driver"; 
      System.setProperty(driverName, driverPath); 

      Proxy proxy = new org.openqa.selenium.Proxy(); 
      proxy.setSslProxy("192.168.0.200" + ":" + 3128); 
      proxy.setFtpProxy("192.168.0.200" + ":" + 3128); 
      proxy.setSocksUsername("avishka"); 
      proxy.setSocksPassword("12345678"); 

      DesiredCapabilities desiredCapabilities = DesiredCapabilities.chrome(); 
      desiredCapabilities.setCapability(CapabilityType.PROXY, proxy); 


      driver = new ChromeDriver(desiredCapabilities); 


      driver.get(baseUrl); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

を試し、最終的にどのChromeバージョンあなた

関連する問題