篇二:Selenium动态网页

Selenium是一个模拟浏览器,进行自动化测试的工具,它提供一组API可以与真实的浏览器内核交互。

一、部署selenium

  在项目中引入Selenium的Java模块,以Maven为例:

  <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>2.53.0</version>
  </dependency>

  下载浏览器driver,放到本地路径

  chrome:需要下载driver

  firefox:不需要下载driver,只需要火狐安装后的启动exe

二、java代码中实现

  1、基础使用

//谷歌浏览器
System.setProperty("webdriver.chrome.driver", "F:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();

//火狐
System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
//WebDriver driver = new FirefoxDriver();

//要抓取的网页
driver.get(url);

...

//关闭浏览器
driver.close();

  2、常用API

    学习地址:http://www.360doc.com/content/12/0424/18/1200324_206225317.shtml

    获取界面元素

//界面
<input type="text" name="passwd"id="passwd-id" />

//ById
WebElement element = driver.findElement(By.id("passwd-id"));

//ByName
WebElement element = driver.findElement(By.name("passwd"));

//By XPATH
WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));

//By Class Name
<div class="cheese"><span>Cheddar</span></div><divclass="cheese"><span>Gouda</span></div>

List<WebElement>cheeses = driver.findElements(By.className("cheese"));

//By tagName
WebElement element =driver.findElement(By.tagName("a"));

//获取List<WebElement> 
List<WebElement> eles = driver.findElements(By.tagName("a"));

   获取界面元素值

//获取文本内容
String likecount=elements.get(i).findElement(By.className("slide-like")).getText();

//获取属性值
String song_url=elements.get(i).findElement(By.tagName("a")).getAttribute("href");

   操作界面元素

//输入框
WebElement element = driver.findElement(By.id("passwd-id"));//获取输入框对象
element.sendKeys(“test”); //给输入框复制
element.clear(); //清空输入框
element.getText(); //获取输入框内容

//下拉选择框(Select)
Select select = new Select(driver.findElement(By.id("select")));//获取下拉框对象
select.selectByVisibleText(“mediaAgencyA”); //通过key选中选项
select.selectByValue(“MA_ID_001”);//通过value选中选项
select.deselectAll(); //清除所有的选中项
select.deselectByValue(“MA_ID_001”); //通过value清除指定选中项
select.deselectByVisibleText(“mediaAgencyA”);//通过key清除指定选中项
select.getAllSelectedOptions(); //获取所有的选项
select.getFirstSelectedOption(); //获取第一选项

//单选项(Radio Button)
WebElement bookMode =driver.findElement(By.id("BookMode"));//找到单选框元素
bookMode.click(); //选择某个单选项
bookMode.clear();//清空某个单选项
bookMode.isSelected();//判断某个单选项是否已经被选择

//多选项(checkbox)
WebElement checkbox =driver.findElement(By.id("myCheckbox."));//获取多选项对象
checkbox.click();//选择某个选项
checkbox.clear();清空某个选项
checkbox.isSelected();判断某个选项是否已经被选择
checkbox.isEnabled();

//按钮(button)
WebElement saveButton = driver.findElement(By.id("save"));
saveButton.click();//点击按钮
saveButton.isEnabled ();//判断按钮是否enable

//表单(Form)
WebElement approve = driver.findElement(By.id("approve"));//获取表单对象
approve.click();//提交表单
approve.submit();//只适合于表单的提交

//弹出对话框(Popup dialogs)
Alert alert = driver.switchTo().alert();
alert.accept();
alert.dismiss();
alert.getText();

//上传文件 (Upload File)
WebElement adFileUpload = driver.findElement(By.id("WAP-upload")); //上传的input
String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";
adFileUpload.sendKeys(filePath);

//导航 (Navigationand History)
driver.navigate().to("http://www.example.com"); //打开一个新的页面
driver.navigate().forward();//历史向前
driver.navigate().back();//历史向后

 

posted @ 2016-12-19 15:25  刘广平  阅读(277)  评论(0)    收藏  举报