首先要先加入下面的这些jar包
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna -->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.codeborne/phantomjsdriver -->
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.4.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-api -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-htmlunit-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-htmlunit-driver</artifactId>
<version>2.52.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-ie-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-ie-driver</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-support -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
注意我标红的这个jar包,因为我是使用的spring-boot 创建的maven项目继承的父类版本不够所以要重新载入一个新包。网上有看到使用selenium需要加载selenium-server-standalone这个jar替换我加红的包 也是可以的,但是我打包的时候出现了问题,standalone这个包加载不进去所以我就只能使用红色的gson这个jar包了。
接下来就是我写的一个例子:
下面是源码:
public void getForeignTradeMarkSeleniumInfo(String path)
{
WebDriver driver = null;
// System.setProperty("webdriver.chrome.driver", "C:\\Program Files
// (x86)\\Google\\Chrome\\Application\\chrome.exe");
System.setProperty("webdriver.firefox.bin", path + "firefox.exe");
// driver = new ChromeDriver();
System.setProperty("webdriver.gecko.driver", path + "geckodriver.exe");
driver = new FirefoxDriver();
driver.get("http://www.wipo.int/branddb/en/");
try
{
getInfo(driver, "* TO 2018-01-01");
} catch (InterruptedException e)
{
e.printStackTrace();
}
// if (list != null)
// {
foreignTradeMarkDao.addAccountingClerk(list);
// }
}
private void getInfo(WebDriver driver, String date) throws InterruptedException
{
try
{
int maxPage = -1;
// 定义一条数据来验证页面是否刷新
String oldValue = "";
driver.navigate().refresh();
Thread.sleep(2000);
// 定义事件
Actions actions = new Actions(driver);
// 点击选择所有的属性
WebElement newOut = (new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(
"a[class='editButton ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-secondary']")));
// System.out.println("newOut.getText-->" + newOut.getText());
newOut.click();
// 找到add-all按钮并点击
WebElement addall = (new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("a[class='add-all']")));
// System.out.println("addall.getText-->" + addall.getText());
addall.click();
// 点击添加完成
WebElement okButton = (new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(
"button[class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only']")));
// System.out.println("okButton.getText-->" + okButton.getText());
okButton.click();
Thread.sleep(2000);
// 按时间查询
WebElement dateButton = (new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("a[id='ui-id-4']")));
// System.out.println("dateButton.getText-->" +
// dateButton.getText());
dateButton.click();
// 找到输入日期的输入框并赋值
JavascriptExecutor driver_js = (JavascriptExecutor) driver;
driver_js.executeScript("arguments[0].value=\"" + date + "\"",
driver.findElement(By.cssSelector("input[id='AD_input']")));
// 点击查询按钮
WebElement searchButton = (new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath(
"//div[@id='date_search']/div[@class='searchButtonContainer bottom right']/a[@class='noPrint searchButton bigButton ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-secondary']")));
// System.out.println("searchButton.getText-->" +
// searchButton.getText());
searchButton.click();
Thread.sleep(2000);
(new WebDriverWait(driver, 20)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']/td[" + 1 + "]")));
if (maxPage == -1)
{
// 找到总页数
WebElement tempMaxPage = (new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div[class='skipWindow']")));
String tempMaxPageString = tempMaxPage.getText();
// 将数字提取出来
String regEx = "[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(tempMaxPageString);
String maxPageString = m.replaceAll("").trim();
maxPage = Integer.valueOf(maxPageString);
}
log.info("maxPage--->" + maxPage);
log.info("page-->" + page);
for (int i = page; i < maxPage; i++)
{
Thread.sleep(2000);
(new WebDriverWait(driver, 20)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']/td[" + 1 + "]")));
// 调到所要的页数
// 找到输入框
WebElement skipValue = (new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.id("skipValue1")));
// 输入值
driver_js.executeScript("arguments[0].value=\"" + page + "\"", driver.findElement(By.id("skipValue1")));
// 将光标移到input框
actions.click(driver.findElement(By.id("skipValue1")));
Thread.sleep(2000);
// 点击回车刷新数据
actions.sendKeys(Keys.ENTER).perform();
Thread.sleep(2000);
// 确保数据已经更新
if (oldValue.equals((new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']")))
.getText()))
{
Thread.sleep(5000);
}
if (oldValue.equals((new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']")))
.getText()))
{
getInfo(driver, "* TO 2018-01-01");
break;
}
oldValue = (new WebDriverWait(driver, 20))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']")))
.getText();
// 将每条数据拿出
List<ForeignTradeMark> list = new ArrayList<ForeignTradeMark>();
for (int j = 0; j < 30; j++)
{
// for (int k = 7; k < 21; k++)
/*
* WebElement element = (new WebDriverWait(driver,
* 20)).until(ExpectedConditions
* .presenceOfElementLocated(By.xpath("//tr[@id='" + j +
* "']/td[" + k + "]")));
*/
ForeignTradeMark foreignTradeMark = new ForeignTradeMark();
int k = 7;
foreignTradeMark.setBrand((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setSource((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setStatus((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setRelevan((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setOrigin((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setHolder((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setHolderCountry((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setNumber((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setRegDate((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setAppDate((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setExpDate((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setImgClas((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
foreignTradeMark.setNiceCi((new WebDriverWait(driver, 20))
.until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
.getText());
// img拿的是src
try
{
// WebElement imgElement = (new WebDriverWait(driver, 20)).until(ExpectedConditions
// .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")));
foreignTradeMark.setImgString((new WebDriverWait(driver, 20)).until(ExpectedConditions
.presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]/img"))).getAttribute("src"));
} catch (Exception e)
{
}
list.add(foreignTradeMark);
log.info(foreignTradeMark.toString());
}
foreignTradeMarkDao.addAccountingClerk(list);
page++;
log.info("page++-->" + page);
}
} catch (Exception e)
{
getInfo(driver, "* TO 2018-01-01");
}
}