因为几天我尝试使用Selenium框架。我有这个框架的2个问题。
但我的元素完全可见,我在这个页面上只有一个带有此名称的元素。当我更改浏览器版本时,可以避免此错误,但它太烦人了......
这是我在twitter上的代码示例:
public static void main(String[] args) {
HtmlUnitDriver htmlUnit = new HtmlUnitDriver(DesiredCapabilities.firefox());
WebDriver driver = htmlUnit;
goToTwitter(driver);
}
public static void goToTwitter(WebDriver driver){
driver.get("http://www.twitter.fr/login");
// Find the text input element by its name
WebElement element = driver.findElement(By.name("session[username_or_email]"));
WebElement element2 = driver.findElement(By.name("session[password]"));
// Enter something to search for
element.sendKeys("****");
element2.sendKeys("****");
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
// Check the title of the page
System.out.println("Page title is: " + driver.getTitle());
System.out.println("Page title is: " + driver.getCurrentUrl());
}
GetCurrentUrl返回“mobile.twitter.com”,我需要这个网站的桌面版本。
所以我的问题是我们如何强制网站使用此框架返回桌面版本?
答案 0 :(得分:0)
我解决了这个问题,激活了两个表单的javascript,在selenium中使用了methot setJavascriptEnabled(true);并在创建newWebClient时,直接在htmlunit中设置javascript
public HtmlUnitCustomizedWebDriver(BrowserVersion browser) {
super(browser);
this.setJavascriptEnabled(true);//this line
}
....
@Override
protected WebClient newWebClient(BrowserVersion version) {
WebClient webClient = new WebClient(version);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setTimeout(60000);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(true);//this line
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setPopupBlockerEnabled(false);
return webClient;
}