Selenium Webdriver 简易教程

简介: Selenium Webdriver 简易教程

Selenium是ThroughtWorks公司开发的一套Web自动化测试工具。


它分为三个组件:


  • Selenium IDE
  • Selenium RC (Remote Control)
  • Selenium Webdriver



Selenium IDE是firefox的一个插件,允许测试人员录制脚本并回放。


Selenium RC和Selenium Webdriver是测试框架,提供多种语言的API。不同的是,Selenium Webdriver以一种更底层、更灵活的方式来操作浏览器,并不仅仅使用javascript。这样它可以绕开浏览器的沙箱限制,实现Selenium RC不支持的框架、弹出窗口、页面导航、下拉菜单、基于AJAX的UI元素等控件的操作。以及,Selenium Webdriver不需要本地服务器。


Selenium 1.x版本只包含前两个组件。从2.0开始Webdriver加入其中。




准备工作


由于本篇教程用Java做示范,所以请先安装JDK并配置好环境变量。


到官网下载库文件selenium-java-2.xx.x.zip,如果官网被墙了就到CSDN去找。打开压缩包,selenium-java-2.25.0.jar的库文件,需要导入到项目中;selenium-java-2.25.0-srcs.jar是源码,里面是一些*.java文件;lib文件夹里面是依赖包,也要一起导入到项目中。


除了firefox浏览器,其它浏览器基本都需要驱动,同样请到官网下载。




浏览器操作


打开浏览器


打开默认路径的firefox

WebDriver driver = new FirefoxDriver();


打开指定路径的firefox

System.serProperty("webdriver. firefox.bin",
                   "C:\\Program Files\\Mozilla Firefox\\firefox.exe");
WebDriver driver = new FirefoxDriver();


或者

File pathToFirefoxBinary 
  = new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
FirefoxBinary firefoxbin = new FirefoxBinary(pathToFirefoxBinary);
WebDriver driver = new FirefoxDriver(firefoxbin,null);


打开ie(需要驱动)

1. System.setProperty("webdriver.ie.driver", "...\\IEDriverServer.exe")
2. WebDriver driver = new InternetExplorerDriver();



打开chrome(需要驱动)

System.setProperty("webdriver.chrome.driver", "...\\chromedriver.exe" );
System.setProperty("webdriver.chrome.bin", 
                   "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe");
WebDriver driver = new ChromeDriver();



打开URL

用get方法

driver.get("http://www.51.com");


或者用navigate方法,然后再调用to方法

driver.navigate().to("http://www.51.com");



关闭浏览器


用quit方法

driver.quit();


或者用close方法

driver.close();


返回当前页面url和title


得到title

String title = driver.getTitle();


得到当前页面url

String currentUrl = driver.getCurrentUrl();


输出title和currenturl

System.out.println(title+"\n"+currentUrl);



其他方法


  • getWindowHandle() 返回当前的浏览器的窗口句柄
  • getWindowHandles() 返回当前的浏览器的所有窗口句柄
  • getPageSource() 返回当前页面的源码



对浏览器的支持


HtmlUnit Driver


优点:HtmlUnit Driver不会实际打开浏览器,运行速度很快。对于用FireFox等浏览器来做测试的自动化测试用例,运行速度通常很慢,HtmlUnit Driver无疑是可以很好地解决这个问题。


缺点:它对JavaScript的支持不够好,当页面上有复杂JavaScript时,经常会捕获不到页面元素。


使用:

WebDriver driver = new HtmlUnitDriver();



FireFox Driver


优点:FireFox Dirver对页面的自动化测试支持得比较好,很直观地模拟页面的操作,对JavaScript的支持也非常完善,基本上页面上做的所有操作FireFox Driver都可以模拟。


缺点:启动很慢,运行也比较慢,不过,启动之后Webdriver的操作速度虽然不快但还是可以接受的,建议不要频繁启停FireFox Driver。


使用:

WebDriver driver = new FirefoxDriver();


Firefox profile的属性值是可以改变的,比如我们平时使用得非常频繁的改变useragent的功能,可以这样修改:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("general.useragent.override", "some UAstring");
WebDriver driver = new FirefoxDriver(profile);



InternetExplorer Driver


优点:直观地模拟用户的实际操作,对JavaScript提供完善的支持。


缺点:是所有浏览器中运行速度最慢的,并且只能在Windows下运行,对CSS以及XPATH的支持也不够好。


使用:

WebDriver driver = new InternetExplorerDriver();




选择器


By ID

页面:

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


代码:

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



By Name


页面同上


代码:

WebElement e = dr.findElement(By.name("passport_51_user"));


By XPATH

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



By Class Name

页面:

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


代码:

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



页面:

<a href="http://www.google.com/search?q=cheese">cheese</a>


代码:

WebElement cheese = driver.findElement(By.linkText("cheese"));



控件操作


输入框

WebElement element = driver.findElement(By.id("passwd-id"));
//在输入框中输入内容:
element.sendKeys(“test”);
//将输入框清空:
element.clear();
//获取输入框的文本内容:
element.getText();


单选框

WebElement radio = driver.findElement(By.id("BookMode"));
//选择某个单选项:
radio.click();
//清空某个单选项:
radio.clear();
//判断某个单选项是否已经被选择:
radio.isSelected();


多选框

WebElement checkbox = driver.findElement(By.id("myCheckbox"));
//与单选框类似
checkbox.click();
checkbox.clear();
checkbox.isSelected();
checkbox.isEnabled();



按钮

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



左右选择框


也就是左边是可供选择项,选择后移动到右边的框中,反之亦然。例如:

Select lang = new Select(driver.findElement(By.id("languages")));
lang.selectByVisibleText(“English”);
WebElement addLanguage = driver.findElement(By.id("addButton"));
addLanguage.click();


表单

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



文件上传

WebElement adFileUpload = driver.findElement(By.id("WAP-upload"));
String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";
adFileUpload.sendKeys(filePath);







相关文章
|
2月前
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
|
2月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
3月前
|
数据采集 Web App开发 测试技术
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
在网络爬虫领域,Selenium与WebDriver是实现跨浏览器自动化数据抓取的利器。本文详细介绍了如何利用Selenium和WebDriver结合代理IP技术提升数据抓取的稳定性和效率。通过设置user-agent和cookie来模拟真实用户行为,避免被网站检测和阻止。文章提供了具体的代码示例,展示了如何配置代理IP、设置user-agent和cookie,并实现了跨浏览器的数据抓取。合理的参数配置能有效减少爬虫被封禁的风险,提高数据抓取效率。
323 6
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
|
3月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
3月前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
4月前
|
JavaScript 测试技术 API
|
4月前
|
XML Java 测试技术
Selenium WebDriver自动化测试(基础篇):不得不掌握的Java基础
关于Selenium WebDriver自动化测试的Java基础篇,涵盖了Java的变量、数据类型、字符串操作、运算符、流程控制、面向对象编程、关键字用法、权限修饰符、异常处理和IO流等基础知识点,为进行自动化测试提供了必要的Java语言基础。
110 1
|
4月前
|
Web App开发 Java 测试技术
自动化测试的新篇章:使用Selenium WebDriver进行高效测试
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试犹如一艘航船,带领着质量保证团队驶向效率与精准的彼岸。本文将揭开Selenium WebDriver的神秘面纱,通过实际案例引导您掌握这一强大的自动化测试工具。我们将从Selenium WebDriver的基础概念出发,逐步深入到代码示例,最后探讨其在现实项目中的应用场景和优势,旨在为您的软件测试之旅提供清晰的指南。
|
4月前
|
Web App开发 敏捷开发 Java
自动化测试中的神器 —— Selenium WebDriver
【8月更文挑战第31天】在软件开发的海洋里,自动化测试是那艘能带领我们驶向高效与精准彼岸的帆船。本文将带你领略Selenium WebDriver的魅力,从安装到实战,一步步解锁自动化测试的新境界。你将看到代码如何化繁为简,让重复的测试工作变得轻松愉快。让我们一起驾驭这股代码的风,向着软件质量的灯塔进发!
|
4月前
|
Web App开发 敏捷开发 测试技术
自动化测试之美:使用Selenium WebDriver进行网页功能验证
【8月更文挑战第29天】在数字时代,软件质量是企业竞争力的关键。本文将深入探讨如何通过Selenium WebDriver实现自动化测试,确保网页应用的可靠性和性能。我们将从基础设置到编写测试用例,逐步引导读者掌握这一强大的测试工具,同时分享实战经验,让测试不再是开发的负担,而是质量保证的利器。

热门文章

最新文章

下一篇
无影云桌面