当前位置: 首页 > 面试题库 >

如何使用带有Java的Selenium webdriver为Firefox设置代理?

石超
2023-03-14
问题内容
System.setProperty("webdriver.gecko.driver", "E:\\geckodriver-v0.18.0-win64\\geckodriver.exe");
    Proxy p = new Proxy();
    p.setSocksProxy("83.209.94.87:35923");
    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(CapabilityType.PROXY, p);
    WebDriver driver = new FirefoxDriver(cap);
    driver.get("https://www.google.com.au");

这段代码在main方法内部。当我运行此代码时,将启动firefox,但不会遵循google
url,并且代理未设置为我在上面的代码中指定的代理。我怎样才能解决这个问题?

public static void main(String[] args) throws InterruptedException, IOException, UnsupportedEncodingException {
    while (true) {
    System.setProperty("webdriver.gecko.driver", "E:\\geckodriver-v0.18.0-win64\\geckodriver.exe");
    WebDriver driver;
    String PROXY = "83.209.94.87:35923";
      //Bellow given syntaxes will set browser proxy settings using DesiredCapabilities.
      Proxy proxy = new Proxy();
      proxy.setAutodetect(false);
      proxy.setProxyType(Proxy.ProxyType.MANUAL);
      proxy.setSocksProxy(PROXY);
      DesiredCapabilities cap = new DesiredCapabilities();
      cap.setCapability(CapabilityType.PROXY, proxy);
      //Use Capabilities when launch browser driver Instance.
      driver = new FirefoxDriver(cap);`

问题答案:

由于存在错误,您目前无法使用Proxy对象。您应该使用以下代码

    FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference("network.proxy.type", 1);
    profile.setPreference("network.proxy.socks", "83.209.94.87");
    profile.setPreference("network.proxy.socks_port", 35923);

    FirefoxDriver driver = new FirefoxDriver(profile);
    driver.get("https://www.ipinfo.io");

该错误已在https://github.com/mozilla/geckodriver/issues/764上讨论,您将在下面的链接中看到Marionette驱动程序在后台执行的操作

https://dxr.mozilla.org/mozilla-
central/source/testing/marionette/session.js#155

所以上面的代码只是复制相同的



 类似资料:
  • 问题内容: 很多时候,Java应用程序需要连接到Internet。最常见的示例是在读取XML文件并需要下载其架构时发生的。 我在代理服务器后面。如何设置我的JVM使用代理? 问题答案: 从Java文档(不是 javadoc API)中: http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html 设置JVM标

  • 问题内容: 假设我在Go中有一个中间件,我想用自己的值覆盖任何现有的标头。 然后我将其添加到这样的响应链中 不幸的是,如果authHandler或由DefaultServeMux调用处理的任何事情(例如,httputil.ReverseProxy.ServeHTTP),我最终在响应中会有两个Server标头。 我真正想要的是这样的: 但是,ServeHTTP的语义不允许这样做: ServeHTTP

  • 问题内容: 我可以如下设置Firefox的代理设置。 但是我也需要设置Chrome。.有人可以帮助我怎么做吗? 谢谢拉吉 问题答案: 您可以尝试使用该类,如下所示:

  • 问题内容: 我想使用TestNG以特定顺序运行Selenium WebDriver(Java)测试类。 例如。我有3个类,例如Test1,Test2和Test3。我要按Test2,Test1和Test3的顺序运行。是否可以不分组? 我尝试了以下方式,但是我以其自己的顺序(字母顺序)运行。 还有其他方法吗?如果没有分组,这可能吗? 问题答案: 只需使用 preserve-order =“ true”

  • 这是我用来通过SeleniumWebDriver(Java)启动Firefox的代码: 但是,当我在已启动的浏览器中输入并检查设置时,只更改了代理主机。设置为。当我通过导航检查我的IP时,例如。, 到然后我看到我的真实IP地址。我传递的值是正确的。我在HtmlUnit驱动程序中设置代理没有问题。 涉及的版本包括: 硒3.6.0 有什么我需要改变的吗?

  • 这是我正在使用的,用户代理可以成功设置,而下载首选项不能。 Windows 7、Chrome 26、Selenium-dotnet-2.31。2,chromedriver_win_26.0。1383 取自chromedriver。日志: 检查temp首选项文件在,没有设置和。