一、什么是Selenium?
1、“Selenium”是一个项目的名字,它包括了一组工具和API:Selenium IDE,Selenium RC,Selenium WebDriver,和Selenium Grid等。其中Selenium IDE是一个Firefox的插,这篇文章我们主要来看下Selenium WebDriver。Selenium WebDriver 是一个支持浏览器自动化的工具。它包括一组为不同语言提供的类库和“驱动”(drivers)可以使浏览器上的动作自动化
二、 Selenium WebDriver 入门使用
1、创建Selenium 的java项目
首先我们来看下官方文档,https://www.seleniumhq.org/docs/06_test_design_considerations.jsp
设置Selenium 2.0 Java项目的最简单方法是使用Maven.。创建一个maven项目,在pom.xml文件中引入对应版本的jar包就可以。 版本号都可以吧,看自己的需求。如图是我引入的版本号
2、常用的一些API文档
1)关于浏览器的一些操作,以下以Chrome为例
打开chrome浏览器:WebDriverdriver = new ChromeDriver();
最大化浏览器:driver.manage().window().maximize();
关闭浏览器:driver.close(); driver.quit();
打开页面:driver.get("http://www.google.com");
driver.navigate().to("http://www.baidu.com/");
navigate方法会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退刷新等
2)关于定位元素:
findElement(By.id()) 通过id属性定位元素
findElement(By.name()) 通过name属性定位元素
findElement(By.className()) 通过class属性定位元素
findElement(By.tagName()) 通过HTML标签名定位元素
findElement(By.linkText()) 通过链接内容定位元素
findElement(By.partialLinkText()) 通过部分链接内容定位元素
findElement(By.xpath()) 通过css选择器定位元素
findElement(By.cssSelector()) 通过xpath定位元素
3)关于鼠标事件
鼠标事件,首先要引入actions类。Actions action =new Actions(driver);
actions类提供了一些常用的方法
. contextClick() 右击
· clickAndHold() 鼠标点击并控制
· doubleClick() 双击
· dragAndDrop() 拖动
· release() 释放鼠标
· perform() 执行所有Actions中存储的行为
4)关于iframe
第一个是根据frame的索引来定位,第二个是根据frame的ID或者name去识别,第三个是根据该frame内部一个元素去识别,第四个就是从frame内部切换到默认的Top Window的方法。
这里要注意,利用索引来切换frame的时候只有对平级的iframe才有效果,如果是嵌套的iframe,建议是根据ID或者name去切换。当然某些情况下可能没有ID或者name是随即生成的,这个时候可以先找到对应的iframe的xpath。再根据xpath去切换。例如:
WebElementtxtFMortgageDeptName=driver.findElement(By.xpath("/html[1]/body[1]/div[5]/iframe[1]" ));
driver.switchTo().frame(txtFMortgageDeptName);
虽然iframe的切换常用的只有以上几种方式,但是在整个过程当中,还是被iframe的坑 整得崩溃。说出来都是泪,一时半会感觉表达不清楚。如果有同行碰到坑,欢迎留言。比如已经进入了一个iframe,想要直接切换到另一个嵌套的子iframe,居然报错。后来每次都是先切换到主窗口,driver.switchTo().defaultContent();然后再进行切换。最最最重要的是,还是在看运行时,整个网页的dom结构,再决定如何去切换iframe。
三、 Selenium WebDriver 的一些简单封装