Selenium超简单入门

一、它可以做什么
小时候玩网游时,接触过一款名为“按键精灵”的软件,可以用它先录好一些点击事情,例如让游戏人物在原地转圈,发招打怪等,之后自己就可以不用重复点鼠标,按键精灵能帮我们反复执行动作。selenium的作用,与之类似,他是一款自动化工具,是网页自动化测试、网页数据爬虫的利器。

二、一个最简单的例子
1、获取依赖包
获取selenium-server-standalone-2.25.0.jar并引入到项目中

获取chrome浏览器内核driver程序 chromedriver.exe,并放到 D:/WebDriver/

2、例子程序( 配好依赖包,可直接用哦)
[java]  view plain  copy
  1. import org.openqa.selenium.By;  
  2. import org.openqa.selenium.WebDriver;  
  3. import org.openqa.selenium.WebElement;  
  4. import org.openqa.selenium.chrome.ChromeDriver;  
  5.   
  6. /** 
  7.  * 这段程序演示了:借助 selenium,启动 chrome浏览器,并登录QQ邮箱的过程 
  8.  * 
  9.  * @author lizeyang 
  10.  * 
  11.  */  
  12. public class SeleniumUtil  
  13. {  
  14.         // 浏览器程序的路径  
  15.         private String webBrowserPath = "";  
  16.   
  17.         private WebDriver driver = null;  
  18.   
  19.         private String loginUrl = "https://mail.qq.com/cgi-bin/loginpage" ;// QQ邮箱的登录页  
  20.         private String username = "10000"// QQ帐号  
  21.         private String password = "helloworld"// QQ密码  
  22.   
  23.         // 初始化 selenium要调用的浏览器并启动  
  24.         public void init()  
  25.        {  
  26.                webBrowserPath = "D:/WebDriver/chromedriver.exe" ;  
  27.               System. setProperty( "webdriver.chrome.driver", webBrowserPath );  
  28.                driver = new ChromeDriver();  
  29.        }  
  30.   
  31.         // 关闭浏览器  
  32.         public void quitDrvier()  
  33.        {  
  34.                if ( null != driver)  
  35.               {  
  36.                       driver .quit();  
  37.               }  
  38.        }  
  39.   
  40.         public void waitForSecond()  
  41.        {  
  42.                try  
  43.               {  
  44.                      Thread. sleep(1000);  
  45.               }  
  46.                catch (InterruptedException e)  
  47.               {  
  48.                      e.printStackTrace();  
  49.               }  
  50.        }  
  51.   
  52.         // 模拟登录过程  
  53.         public void login()  
  54.        {  
  55.                driver .get(loginUrl ); // 进入QQ登录页  
  56.               WebElement element = driver .findElement(By.id( "uin" ));// 找到id名为 uin的dom 元素  
  57.               element.sendKeys( username );// 当前element为 uin输入框,将用户名填到这个输入框  
  58.               waitForSecond(); // 让进程等待一会,避免偶尔出现的元素获取异常  
  59.               element = driver .findElement(By.id( "p" ));// 找到id名为p的 dom元素  
  60.               element.sendKeys( password );// 将密码填入  
  61.               waitForSecond();  
  62.               element = driver .findElement(By.id( "btlogin" ));// 找到登录按钮  
  63.               waitForSecond();  
  64.               element.click(); // 点击登录按钮  
  65.        }  
  66.   
  67.         public void demo()  
  68.        {  
  69.               init();  
  70.               login();  
  71.                // quitDrvier();  
  72.        }  
  73.   
  74.         public static void main(String[] args)  
  75.        {  
  76.               SeleniumUtil util = new SeleniumUtil();  
  77.               util.demo();  
  78.        }  
  79.   
  80. }  

你可以直接将这段代码copy到你新建的工程中并运行,你看到的效果是:程序自动地启动了一个浏览器,来到QQ邮箱登录页,帐号密码被自动填充到相应输入框,登录到邮箱中

三、页面元素的捕获
使用selenium过程中,一个重要过程,就是对页面元素进行获取,之后才能对这个页面元素做相应操作。因此,这里对页面元素的捕获做一个补充说明。
如例子程序中所示,获取页面元素的基本方法是 driver  .findElement().你可以给 findElement()传入多个参数,表示不同的页面元素寻找方法.例如通过查找页面元素的id是通过By.id这个名字。
更多的方法如下图所示:


这里特别推荐xpath的方式,Xpath的能力非常强大,基本上所有的元素都能拿到。例如,就算页面元素既没有id号,又没有唯一的class名称,它的父节点是一个div,拥有class名为paginatorBatchSizes,而它自己本身是一个span元素,那么By.xpath("//div[@class='paginatorBatchSizes']/span")就能拿到这个元素。总而言之,Xpath的能力,还有更多的想象空间,但它具体还有哪些能力,这里就不展开了,可以到 Xpath常见用法做进一步了解
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值