selenium.properties 配置文件
prop.key=phantomjs.binary.path
prop.linux=/home/phantomjs-2.1.1/bin/phantomjs
prop.windows=F:/Development tools/WebDriver/phantomjs.exe
prop.lucene=F:/lucene/index/
#prop.key=webdriver.chrome.driver
#prop.linux=/home/chromedriver
#prop.windows=F:/Development tools/WebDriver/chromedriver.exe
SeleniumUtil 工具类
public class SeleniumUtil {
private Properties properties = getProperties();
private String osName = System.getProperties().getProperty("os.name");
/**
* 调用配置文件
*/
private Properties getProperties() {
Properties properties = new Properties();
try {
properties.load(SeleniumServiceImpl.class.getClassLoader().getResourceAsStream("selenium.properties"));
} catch (IOException e) {
e.fillInStackTrace();
}
return properties;
}
/**
* 开启进程
*/
private void createProperty() {
// 判断系统的环境win or Linux
if ("Linux".equals(osName)) {
System.setProperty(properties.getProperty("prop.key"), properties.getProperty("prop.linux"));
} else {
System.setProperty(properties.getProperty("prop.key"), properties.getProperty("prop.windows"));
}
}
public void start(String url) {
createProperty();
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("takesScreenshot", false);
WebDriver driver = new PhantomJSDriver(caps);
driver.get(url);
for (WebElement element : getHandle(driver).findElements(By.tagName("a"))) {
}
}
/**
* 获得最新打开的页面
*/
private WebDriver getHandle(WebDriver driver) {
ArrayList<String> handles = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(handles.get(handles.size() - 1));
return driver;
}
/**
* 判断元素是否存在
*/
private boolean isElement(WebDriver driver, By selector) {
try {
getHandle(driver).findElement(selector);
return true;
} catch (Exception e) {
return false;
}
}
/**
* 防止点击事件出现异常
*/
private void click(WebDriver driver, WebElement element) {
try {
if (element.getTagName().equals("a")) {
((JavascriptExecutor) driver).executeScript("arguments[0].target=arguments[1]", element, "_blank");
}
((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 关闭当前页
*/
private void close(WebDriver driver, boolean isClose) {
if (isClose) {
driver.close();
sleep(1000);
// 重新返回当前页
}
getHandle(driver);
}
/**
* 睡眠 防止内存溢出
*/
private void sleep(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
e.fillInStackTrace();
}
}
/**
* 关闭进程
*/
private void clearProperty() {
System.clearProperty(properties.getProperty("prop.key"));
}
}