2016-06-12 13 views
4

Firefox 47以降はSelenium Webdriverをサポートしていません。私はマリオネットのドライバを使ってFirefox経由でテストを始めようとしました。Firefoxブラウザでマリオネットドライバ経由でセットアッププロキシ

Firefoxの設定(プロキシはnetwork.proxy.type = 4、自動検出に設定する必要があります)の設定は、Firefoxの設定には適用されなくなりました(Firefoxは開きますが、すべての設定はデフォルトで設定されています)。 。

マリオネットドライバを使用してFirefoxブラウザでプロキシを設定するにはどうすればよいですか?

答えて

1

firefoxProfileまたはProxyクラスの古いトリックはもう機能しません。あなたがしなければならないのは、新しいマリオネットプロキシ形式でrequiredCapabilitiesてJSONを渡すことです:

[{代理= { "proxyTypeのは": "MANUAL"、 "HTTPPROXY": "host.proxy"、 "httpProxyPortの" :80、 "sslProxy": "host.proxy"、 "sslProxyPort":80}}]

これ以上 "proxyHost:proxyPortの" フォーマットが、HTTPPROXY =ホスト、httpProxyPortの=ポート。ここで

JsonObject json = new JsonObject(); 
json.addProperty("proxyType", "MANUAL"); 
json.addProperty("httpProxy", aHost); 
json.addProperty("httpProxyPort", aPort); 
json.addProperty("sslProxy", aHost); 
json.addProperty("sslProxyPort", aPort); 

required.setCapability("proxy", json); 

driver = new FirefoxDriver(service, cap, required); 

は、すべてのコードです:

import java.io.File; 

輸入にjava.io.IOException;

import org.apache.commons.lang.SystemUtils; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxBinary; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.firefox.GeckoDriverService; 
import org.openqa.selenium.remote.DesiredCapabilities; 

import com.google.common.collect.ImmutableMap; 
import com.google.gson.JsonObject; 

public class TestProxy 
{ 
    public static void main(String[] args) 
    { 
    if (args.length == 0) 
    { 
     System.out.println("usage: IP port"); 
     System.exit(-1); 
    } 

    String proxyServer = args[0]; 
    int proxyPort = Integer.parseInt(args[1]); 

    try 
    { 
     TestProxy test = new TestProxy(); 
     test.TestDriver(proxyServer, proxyPort); 
    } catch (IOException e) 
    { 
     e.printStackTrace(); 
    }  
    } 

    private void TestDriver(String aHost, int aPort) throws IOException 
    { 
    WebDriver driver = null; 
    GeckoDriverService service = null; 

    if (SystemUtils.IS_OS_LINUX) 
    { 
     FirefoxBinary firefoxBinary = new FirefoxBinary(new File("/home/ubuntu/firefox/firefox")); 

     service = new GeckoDriverService.Builder(firefoxBinary) 
      .usingDriverExecutable(new File("/usr/bin/geckodriver")) 
      .usingAnyFreePort() 
      .usingAnyFreePort() 
      .withEnvironment(ImmutableMap.of("DISPLAY",":20")) 
      .build(); 
     service.start();  
    } 
    else if (SystemUtils.IS_OS_WINDOWS) 
    { 
     FirefoxBinary firefoxBinary = new FirefoxBinary(new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe")); 

     service = new GeckoDriverService.Builder(firefoxBinary) 
      .usingDriverExecutable(new File("C:\\Windows\\geckodriver.exe")) 
      .usingAnyFreePort() 
      .usingAnyFreePort() 
      .build(); 
     service.start();  
    } 
    else 
    { 
     System.out.println("Unknown operation system"); 
     System.exit(-1); 
    } 

    DesiredCapabilities cap = DesiredCapabilities.firefox(); 
    DesiredCapabilities required = new DesiredCapabilities(); 

    JsonObject json = new JsonObject(); 
    json.addProperty("proxyType", "MANUAL"); 
    json.addProperty("httpProxy", aHost); 
    json.addProperty("httpProxyPort", aPort); 
    json.addProperty("sslProxy", aHost); 
    json.addProperty("sslProxyPort", aPort); 

    required.setCapability("proxy", json); 

    driver = new FirefoxDriver(service, cap, required); 

    driver.navigate().to("https://api.ipify.org/?format=text"); 

    System.out.println(driver.getPageSource()); 

    driver.quit(); 
    } 
} 

https://github.com/SeleniumHQ/selenium/issues/2963

https://github.com/mozilla/geckodriver/issues/97#issuecomment-255386464

関連する問題