5

如何在 Selenium Java 中为 HtmlUnitDriver 设置用户代理属性?我可以为firefox驱动程序设置它

FirefoxProfile ffp = new FirefoxProfile();
ffp.setPreference("general.useragent.override", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7");
WebDriver driver = new FirefoxDriver(ffp);

有没有办法为 HtmlUnitDriver 做到这一点?我尝试使用 setCapability("UserAgentName", "some UA settings"); 但这不起作用。

4

3 回答 3

8

您是否尝试过使用 DesiredCapabilities?

DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit();
capabilities.setBrowserName(<browser_name>);
capabilities.setPlatform(<platform>);
capabilities.setVersion(<version>);
driver = new HtmlUnitDriver(capabilities);
于 2012-10-12T08:27:12.640 回答
4

为HtmlUnitDriver设置自定义用户代理字符串:

final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20160101 Firefox/66.0";

WebDriver driver = new HtmlUnitDriver(new BrowserVersion(
                "Firefox", "5.0 (Windows)", USER_AGENT, 66 //important is 3rd argument
));

    

有用。我在http://myhttp.info上对其进行了测试,以从远程服务器获取用户代理

(操作系统:W7,Selenium 版本:2.37.1,Java 7u45 x64)

@Test
public void testUserAgent() throws Exception {
    driver.get("http://myhttp.info");
    MyHttpInfoPage myHttpInfoPage = PageFactory.initElements(driver, MyHttpInfoPage.class);
    String userAgent = myHttpInfoPage.getUserAgent(); // @FindBy(xpath = "//td[text()='User agent']/following-sibling::td")
    Assert.assertEquals(userAgent, USER_AGENT);
}

(另见BrowserVersion JavaDoc)

于 2013-12-02T13:47:45.293 回答
0

HtmlUnit最近更新了有关浏览器版本的内部信息。现在要更改设置用户代理字符串的模拟浏览器版本,您必须指定浏览器version功能,例如:

铬(默认)

DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit();
capabilities.setVersion(org.openqa.selenium.remote.BrowserType.CHROME);
WebDriver myDriver = new HtmlUnitDriver(capabilities);

IE浏览器

DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit();
capabilities.setVersion(org.openqa.selenium.remote.BrowserType.IE);
WebDriver myDriver = new HtmlUnitDriver(capabilities);

Firefox(未指定 Firefox 版本,默认为 52)

DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit();
capabilities.setVersion(org.openqa.selenium.remote.BrowserType.FIREFOX);
WebDriver myDriver = new HtmlUnitDriver(capabilities);

Firefox(指定两个可用版本之一:45 或 52)

DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit();
// specify ff version 45
capabilities.setVersion(org.openqa.selenium.remote.BrowserType.FIREFOX + "-45");
// ...or specify ff version 52
capabilities.setVersion(org.openqa.selenium.remote.BrowserType.FIREFOX + "-52");
WebDriver myDriver = new HtmlUnitDriver(capabilities);

以上是截至今天的所有可用版本。

要验证他们是否更改,请检查他们的 master 分支

于 2017-08-06T20:35:07.783 回答