初始化一个WebDriver,用的是FireFox浏览器:
final public WebDriver getWebDriver()
{
FirefoxProfile profile = new FirefoxProfile();
profile.setEnableNativeEvents(true);
profile.setPreference("general.useragent.override", "some UAstring");
WebDriver driver = new FirefoxDriver(profile);
// 隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉WebDriver查询Dom一定时间,这个时间将在WebDriver对象实例整个生命周期都起作用。
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("URL");
return driver;
}
设置窗口最大化:
driver.manage().window().maximize();
判断alert对话框是否存在:
public static boolean isAlertPresent(WebDriver driver)
{
try
{
driver.switchTo().alert();
return true;
}
catch (NoAlertPresentException Ex)
{
return false;
}
}
关闭浏览器窗口:
public static void closeWindow(WebDriver driver)
{
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(" window.close(); ");
((JavascriptExecutor) driver).executeScript("window.close();");
Logs.debug("close window");
driver.close();
}
查找控件的一些方法:
List<WebElement> elementList = driver.findElements(By
.id("ID")); //找到所有id为ID的控件集合
WebElement element = driver.findElement(By
.id("ID")); //找到id为ID的控件,如果该页面下有多个控件的id为ID,则会默认选择第一个
//其他通过属性查找控件的方法还有:
//By.name("name")
//By.className("class")
//By.tagName("标签名")
//By.linkText("超级链接中的Text内容")
//By.xpath("//span[contains(@id,'ID')]") //查找全局页面中的属性为id,属性值为ID的控件
//By.xpath("//li[@viewtype='3']") //xpath查找的方式有多种,还有待发现
//selenium也可以查找某个控件下的所有控件或者一个控件,也就是所谓的父节点与子节点
页面跳转:
driver.switchTo().defaultContent(); //跳转到默认页面,也就是相当于根节点
//通过xpath找到全局的属性名为src,属性值为SRC的控件
List<WebElement> iframes = driver.findElements(By.xpath("//iframe[contains(@src,'SRC')]"));
for (WebElement iframe : iframes)
{
//判断当此iframe控件为显示状态,则进入到此iframe中
if (iframe.isDisplayed())
{
Logs.info("go to frame:" + iframe.getAttribute("src"));
driver.switchTo().frame(iframe); //跳转到iframe页面中
break;
}
else
{
Logs.debug("info : go to frame");
}
}
关闭窗口:
driver.quit(); //关闭浏览器