背景
工作中研究过一段时间自动化,因为一些原因暂时搁置了,以后会再捡起来,特记录一些selenium基本知识,供以后复习使用。
Selenium的简单介绍
Selenium是什么
Selenium是一款用于Web应用程序测试的工具,框架底层使用JavaScript模拟用户对浏览器进行操作。
selenium不是单纯的一个工具,是一组工具的集合,而且也有版本之分(目前3.0)
selenium IDE
selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。
优点:
1、快速的创建bug重现脚本。
在测试过程中,发现了bug之后可以通过IDE将重现的步骤录制下来,可以帮助开发人员更容易的重现bug。
2、IDE录制的脚本可以转换成多种语言,有助于快速的开发脚本。
selenium Grid
Selenium Grid是一种自动化测试辅助工具,Grid通过利用现有的计算机基础设施,能加快Web-app的功能测试。利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。
特点:
1、并行执行
2、通过一个主机统一控制用例在不同环境、不同浏览器下运行。
3、灵活添加变动测试机
selenium RC
selenium RC是selenium的核心工具,selenium RC支持多种不同的语言编写自动化测试脚本,通过selenium RC的服务器作为代理服务器去访问应用从而达到测试的目的。
selenium RC分为Client Libraries和selenium Server两部分
Client Libraries:
Client Libraries库主要用于编写测试脚本,是控制selenium Server的库。
Selenium Server:
负责控制浏览器行为,Selenium Server主要包括3个部分:Launcher、Http Proxy、Core。
Selenium Core:被Selenium Server嵌入到浏览器页面中的。Selenium Core其实就是一堆JS函数的集合,通过这些JS函数,才可以实现用程序对浏览器进行操作。
Launcher:用于启动浏览器,把selnium Core加载到浏览器页面当中,并把浏览器的代理设置为Selenium Server 的Http Proxy。
selenium 2.0
selenium 2.0与selenium 1.0的关系,简单用公式表示为:
selenium 2.0 = selenium 1.0 + WebDriver
在selenium 2.0中主推WebDriver,WebDriver是selenium RC的替代品,因为selenium为了向下兼容,所以selenium RC并没有被彻底抛弃,如果使用selenium开发一个新自动化测试项目,推荐使用WebDriver 。
selenium RC 与webdriver主要区别:
selenium RC:
在浏览器中运行JavaScript应用,使用浏览器内置的JavaScript翻译器来翻译和执行selenese命令(selenese是selenium命令集合)。
WebDriver:
1、通过原生浏览器支持或者浏览器扩展直接控制浏览器
2、WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript
3、与浏览器的紧密集成支持创建更高级的测试
4、避免了JavaScript安全模型导致的限制
5、利用操作系统级的调用模拟用户输入
Selenium的优势在哪
对B/S应用支持很好
支持多平台/多浏览器
支持多语言开发(java、python、ruby、php、C#、JavaScript等)
支持分布式测试用例执行
学习内容丰富,增加测试工程师的技术竞争力
可选语言丰富
从语言易学性来讲,首选python和ruby
从语言应用广度来讲,首选java、C#和php等
从语言相关测试技术成度来讲:ruby、python和java
考虑整个技术团队主流用什么语言,然后选择相应的语言。
selenium集成java的一些常用方法
1、页面元素定位方法:
ID: driver.findElement(By.id(“ID值”));
Name: driver.findElement(By.name(“name值”));
链接的全部文字: driver.findElement(By.linkText(“链接的全部文字内容”));
部分链接文字: driver.findElement(By.partialLinkText(“链接的部分文字内容”));
Xpath: driver.findElement(By.xpath(“Xpath定位表达式”));
CSS: driver.findElement(By.cssSelector(“CSS定位表达式”));
Class: driver.findElement(By.className(“页面元素的Class属性值”));
标签名称: driver.findElement(By.tagName (“页面元素的HTML标签名称”));
2、打开浏览器:
打开firefox: WebDriver driver= new FirefoxDriver();
打开ie: WebDriver driver =new InternetExplorerDriver();
打开chrome: WebDriver driver = new ChromeDriver();
打开指定路径浏览器: System.setProperty("webdriver.firefox.bin","D:\\ProgramFiles\\MozillaFirefox\\firefox.exe");
3、关闭浏览器:
driver.close();
driver.quit();
4、返回当前页面Title URL:
driver.getTitle();
driver.getCurrentUrl();
5、返回上一个访问的网页:
driver.navigate().to(url1);
driver.navigate().to(url2);
driver.navigate().back();
6、刷新当前网页:
driver.navigate().refresh();
7、输入框中输入指定内容:
driver.sendKeys();
8、输入框中清除文字内容:
driver.clear();
9、查看页面元素属性:
driver.getAttribute(“value”);
10、点击按钮:
driver.click();
11、操作frame:
Driver.switchTo.frame()
12、单选下拉列表:
Select dropList = new Select(element);
Select.getFrestSelectOption().getText();
Select.selectByIndex();
Select.selectByValue();
Select.selectByVisibleText();
例子:
单选框:
List<WebElement> radioList = driver.findElements();
radio. getAttribute("Value").equals("");
radio.isSelectd()
radio.click();
复选框:
List<WebElement> checkList = driver.findElements();
check.getAttribute("Value").equals("");
check.isSelectd()
check.click();
13、Alert弹窗:
Alert alert = driver.switchTo().alert();
alert.accept();
14、执行JavaScript脚本:
声明一个JavaScript 执行器对象
JavaScriptExecutor js = (JavaScriptExecutor )driver;
js.executeScript(“loginSubmit();”);
总结
无