众所周知,在基于项目考虑的话,selenium在Testng中的不同API,方法和annotations在测试class中会被频繁调用,而如果用页面封装,例如PageFactory的话,可以大大简化测试用例中的方法调用,并且命名规则也可以得到统一规范,之前看到一个selenium教程,还很不错,在此推荐一下:
http://www.seleniumcn.cn/read.php?tid=8003
在视频中的方法就不赘述了,下面我们看一个典型的传统TestNG case,初学者可能比较多的使用IDE录制工具,然后再补充进一些个人方法和API的应用等,但这样一来,显然不利于长期维护,也会降低可读性。
实例1:
public class BaiduMap {
WebDriver driver;
String baseUrl= "http://map.baidu.com/";
@Test
public void Map_case1() {
driver.get(baseUrl);
driver.findElement(By.xpath("//*[@id='PoiSearch']")).sendKeys("abc");
driver.findElement(By.id("poiSearchBtn")).click();
sleep(3000);
getScreenshot();
}
@BeforeMethod
public void beforeMethod() {
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS );
driver.manage().window().maximize();
}
@AfterMethod
public void afterMethod() {
}
public void sleep(long timer)
{
try {
Thread.sleep(timer);
}
catch(InterruptedException e) {
Thread.currentThread().interrupt();
}
}
//Get screenshot method,to save the file to date format
public void getScreenshot()
//throws IOException
{
Date date1=new Date();
String h=String.format("%tH", date1);
String m=String.format("%tM", date1);
String s=String.format("%tS", date1);
String d=String.format("%tF", date1);
String PathOfSnapshot = "E:/VS testing/Eclipse_Test/";
String SnapshotName = d+"_"+h+m+s + ".png";
PathOfSnapshot = PathOfSnapshot + SnapshotName;
//Selenium.CaptureScreenshot(PathOfError);
File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try
{
FileUtils.copyFile(screenShotFile, new File(PathOfSnapshot));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
}
catch (NoSuchElementException e) {
return false;
}
}
}
而如果使用封装将一些常用的方法封装到一个UnitTestBase文件里,当我们需要调用,修改逻辑,页面结构时,只需要变动这个Base文件就ok了,关于架构方面,有很多高手,我仅仅抛砖引玉了:
实例2:
public class BaseUnit {
WebDriver driver;
String baseUrl= "http://map.baidu.com";
//@Test
public void getScreenshot(WebDriver driver)
{
Date date1=new Date();
String h=String.format("%tH", date1);
String m=String.format("%tM", date1);
String s=String.format("%tS", date1);
String d=String.format("%tF", date1);
String PathOfSnapshot = "E:/VS testing/Eclipse_Test/";
String SnapshotName = d+"_"+h+m+s + ".png";
PathOfSnapshot = PathOfSnapshot + SnapshotName;
//Selenium.CaptureScreenshot(PathOfError);
File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try
{
FileUtils.copyFile(screenShotFile, new File(PathOfSnapshot));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private boolean isElementPresent(By xpath, WebDriver driver) {
// TODO Auto-generated method stub
try {
driver.findElement(xpath);
return true;
}
catch (NoSuchElementException e) {
return false;
}
}
@BeforeMethod
public void beforeMethod() {
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS );
driver.manage().window().maximize();
}
@AfterMethod
public void afterMethod() {
}
}
而我们的测试类是UnitTestBase的子类,我们可以直接写到@test里面,简单的一个例子来说:
@Test
public void Map_case1() {
driver.get(baseUrl);
driver.findElement(By.xpath("//*[@id='PoiSearch']")).sendKeys("abc");
driver.findElement(By.id("poiSearchBtn")).click();
getScreenshot();
}
同时也不用再每次都写@BeforeMethod, @AfterMethod这种标注了,只需要在Base文件里设定好就ok了
分享到:
相关推荐
然后,利用Java编写测试脚本,使用Selenium的API来操作浏览器,结合TestNG的注解定义测试用例和测试套件。最后,通过Maven的命令行工具或者集成开发环境(IDE)中的Maven插件,我们可以执行测试,获取详细的测试报告...
TestNG可以和Selenium结合使用,用于组织和运行测试用例,以及生成详细的测试报告。它支持注解,使得测试代码更加简洁易读。 在"atlantis"这个项目中,可能包含了以下组件和结构: 1. **源代码**:Java类文件,...
我们使用 Selenium WebDriver 来操作浏览器,并使用 TestNG 框架来管理测试用例。 使用 Java+Selenium+TestNG 框架可以实现参数化打开百度搜索的功能。我们可以使用 Xml 配置文件来配置测试套件的参数,然后使用 ...
你可以开始编写使用Selenium WebDriver和TestNG的测试用例了。Selenium WebDriver允许直接与浏览器进行交互,而TestNG提供了丰富的测试功能,如测试套件、测试组、数据驱动测试等。 - 使用Selenium WebDriver编写...
【标题】"selenium+testng页面测试"涉及的核心知识点主要围绕自动化测试工具Selenium以及测试框架TestNG展开,同时也提到了报告生成和错误处理机制。以下是对这些知识点的详细阐述: 1. **Selenium**: Selenium 是...
2. **测试类**:使用Java编写的Selenium WebDriver和TestNG测试用例。这些类通常继承自TestNG的AbstractTest类,并使用Selenium的WebDriver接口来操作浏览器。 3. **参数化测试**:可能包含如何通过TestNG的@...
【Selenium+TestNG自动化测试】是现代软件开发中一种高效的质量保证手段,尤其在云计算领域,如阿里云,自动化测试能显著提升测试效率和软件稳定性。自动化测试通过编写可执行的测试脚本来模拟用户行为,对软件进行...
`WebDriver`、`TestNG`和`ANT`是三个强大的工具,它们协同工作可以帮助我们实现多浏览器兼容性测试。下面将详细阐述这三个工具及其在实际应用中的作用。 `WebDriver`,也称为Selenium WebDriver,是一种用于自动化...
这是一个基于Selenium 3、Java、Maven、TestNG、ReportNG和Excel的自动化测试框架。这个框架结合了多种强大的工具和技术,旨在提高软件测试的效率和准确性,尤其是在Web应用程序的自动化测试领域。 1. **Selenium 3...
本源码集应该是基于Selenium WebDriver和TestNG构建的一个Web自动化测试框架,用于实现网页应用的功能测试和回归测试。通过这个框架,可以高效地编写测试用例,自动化执行网页上的各种操作,如点击按钮、填写表单、...
在这个场景中,我们关注的是一个名为"java+selenium+testng+jenkins.rar"的压缩包,它包含了一套基于Java、Selenium、TestNG和Jenkins的自动化测试解决方案,用于交易系统的测试流程。以下是这些技术的详细介绍: 1...
TestNG测试套件包含了使用Selenium2编写的测试用例,这些测试用例可以控制浏览器执行各种操作,如点击按钮、填写表单、验证页面元素等。通过Ant,你可以设置测试环境、指定测试资源、执行测试并生成测试报告,使得...
本文档《Web自动化测试之Webdriver(TestNG).pdf》详细介绍了如何配置环境和编写使用Selenium WebDriver和TestNG的测试用例。以下总结了文档中提到的关键知识点: 1. 环境配置 - 安装Eclipse开发环境和Java开发工具...
9. **扩展性和可维护性**:使用Selenium WebDriver和TestNG,可以方便地添加新的测试用例或修改现有测试,PageObject模式使得页面变更时只需要更新对应的PageObject类,不会影响测试脚本。 通过学习和实践这个项目...
【标题】"selenium+JAVA+chrome自动化测试demo"揭示了这个项目是关于使用Selenium WebDriver结合Java语言来实现Chrome浏览器的自动化测试。Selenium是一个强大的开源自动化测试框架,允许开发者编写可运行在多种...
Selenium WebDriver 可与JUnit、TestNG等测试框架无缝集成,方便编写和组织测试用例,以及生成测试报告。 总的来说,Selenium WebDriver 的工作原理是通过标准化的协议和驱动程序,实现了测试代码对浏览器的直接...
Selenium WebDriver是一款强大的自动化测试工具,它允许程序员模拟真实用户在浏览器上的操作,进行Web应用程序的功能测试和验收测试。在Java环境下,Selenium WebDriver通常需要引入相应的jar包才能正常工作。...
在后续的文章中,我们将通过实际案例,使用WordPress搭建环境,逐步构建和实现这个Selenium+TestNG+POM框架,包括页面对象的设计、测试用例的编写以及自动化测试的执行和结果分析。通过这个过程,你将更好地理解如何...