Java Selenium-使用WebDriver接口作为类型

Java Selenium-使用WebDriver接口作为类型,java,selenium,Java,Selenium,这不是一个具体的问题,但我认为仍然有效 Selenium教程提供了获取驱动程序的示例: WebDriver driver = new FirefoxDriver(); 但是,这会阻止我们使用特定于浏览器的驱动程序方法。在我的例子中,它是setProxy()。因此,我使用: HtmlUnitDriver driver = new HtmlUnitDriver(); driver.setProxy("someproxy", 6666); 问题是:当我知道要使用哪个驱动程序时,为什么我要限制自己只

这不是一个具体的问题,但我认为仍然有效

Selenium教程提供了获取驱动程序的示例:

WebDriver driver = new FirefoxDriver();
但是,这会阻止我们使用特定于浏览器的驱动程序方法。在我的例子中,它是setProxy()。因此,我使用:

HtmlUnitDriver driver = new HtmlUnitDriver();
driver.setProxy("someproxy", 6666);
问题是:当我知道要使用哪个驱动程序时,为什么我要限制自己只使用WebDriver界面中的方法呢?

使用WebDriver界面作为一种类型更好,因为它提供了灵活性:在不同的时间可能需要不同类型的WebDriver(如FirefoxDriver或ChromeDriver等)

可以使用proxy和DesiredCapabilities设置代理。引用:

因此:

使用WebDriver界面作为一种类型更好,因为它提供了灵活性:在不同的时间可能需要不同类型的WebDriver(如FirefoxDriver或ChromeDriver等)

可以使用proxy和DesiredCapabilities设置代理。引用:


如果今天您使用驱动程序“a”和方法“foo”,明天您将驱动程序更改为“b”,但没有实现方法“foo”,会怎么样?在我的情况下,我必须使用setProxy()方法,因此没有它的WebDriver实现对我来说是无用的。在Selenium中还有其他方法设置代理吗?我想使用desiredcapabilites您可以实现这一点。这可能会很好,谢谢!如果今天您使用驱动程序“a”和方法“foo”,明天您将驱动程序更改为“b”,但没有实现方法“foo”,会怎么样?在我的情况下,我必须使用setProxy()方法,因此没有它的WebDriver实现对我来说是无用的。在Selenium中还有其他方法设置代理吗?我想使用desiredcapabilites您可以实现这一点。这可能会很好,谢谢!
String PROXY = "localhost:8080";

org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy();
proxy.setHttpProxy(PROXY)
 .setFtpProxy(PROXY)
 .setSslProxy(PROXY);
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(CapabilityType.PROXY, proxy);
WebDriver driver = new FirefoxDriver(cap);