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);`
答案 0 :(得分:1)
因为一个错误,你现在无法使用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上讨论了这个错误,你可以看到木偶驾驶员在下面的链接中做了什么
https://dxr.mozilla.org/mozilla-central/source/testing/marionette/session.js#155
所以上面的代码只复制相同的
答案 1 :(得分:1)
在Selenium 3.14.2,Firefox 62,C#.NET 4.5中工作
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"GeckoDriver19", "geckodriver.exe");
service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.SetPreference("network.proxy.type", 1);
firefoxOptions.SetPreference("network.proxy.socks", "127.0.0.1");
firefoxOptions.SetPreference("network.proxy.socks_port", 1080);
IWebDriver driver = new FirefoxDriver(service, firefoxOptions);
driver.Navigate().GoToUrl("https://www.hbus.com/register");
答案 2 :(得分:0)
您可以在自动化代码中通过凭据在此处设置代理详细信息,如上面的答案所述,但这是另一种方法,而无需使用firefox配置文件在Java或python代码中共享您的详细信息。
firefox提供配置文件,我们可以为每个用户创建配置文件并针对代理,书签等对其进行自定义。
Windows用户:打开运行(win + R)并键入'firefox -p'
linux用户:运行命令'firefox -p'
1-它将打开一个对话框,您可以在其中创建个人资料,然后选择该个人资料并打开Firefox。
2-打开一个新标签并搜索'about:config'。接受“风险”并继续,然后单击“显示全部”
3-在这里您可以搜索和设置所有属性
例如:
network.proxy.type 1
1表示手动
2个用于自动代理
适用于Manuall代理-
属性值
network.proxy.http您的代理ip
network.proxy.http_port number端口号
network.proxy.ssl代理服务器ip
network.proxy.ssl_port />端口号
network.proxy.ftp和您的代理ip
network.proxy.ftp_port端口号
(查找您的个人资料名称)
Linux: cd .mozilla / firefox /
Windows:按。键盘上的+ R。将打开“运行”对话框。
输入:%APPDATA%\ Mozilla \ Firefox \ Profiles \
单击确定。将打开一个包含配置文件文件夹的窗口
现在在Java代码中加载此配置文件
FirefoxOptions options = new FirefoxOptions();
options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.ACCEPT);
FirefoxProfile profile=new FirefoxProfile(new File("path of your profile"));
options.setProfile(profile);
WebDriver driver = new FirefoxDriver(options);
System.setProperty("webdriver.gecko.driver", "path of gecko driver");
driver.get("url");