热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于Selenium和Firefox的自动化测试

一、安装Selenium在Eclipse中导入geckodriver,然后内置插件中安装即可。二、安装Firefox和SeleniumIDE插件先安装Firefox,然后搜索Fir

一、安装Selenium
在Eclipse中导入geckodriver,然后内置插件中安装即可。
二、安装Firefox和Selenium IDE插件
先安装Firefox,然后搜索Firefox add-on,从插件中搜索Selenium即可。
三、录制导出代码
打开Selenium,开始录制,对任意学号完成一次操作。然后将录制完成的视频导出为Java(WebDriver+Junit)格式。

注:这里可以用katalon替代。
基于Selenium和Firefox的自动化测试
基于Selenium和Firefox的自动化测试
四、完成自动化测试
可利用Junit的自动化测试对单一操作代码进行改写,使之实现自动化测试。在导入数据的时候有两个需要处理的细节:由于原数据第一行为表头,因此在读取数据的时候需要额外进行一次readLine();由于最后可能会有空行,而split函数在执行时不会对csv的空值进行操作,因此会产生数组越界错误。最简便的解决方法是手动删除空行。关键代码如下:
TestLab2.java:

package testWeb;

import java.util.regex.Pattern;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
@RunWith(Parameterized.class)
public class TestLab2 {
	private String id;
	private String password;
	private String github;
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();
  
  public TestLab2(String id,String password,String github) {
	  this.id = id;
	  this.password=password;
	  this.github=github;
  }
  
  @Parameters 
  public static Collection<String[]>getData() throws IOException{
	  Collection<String[]> list = new ArrayList<>();
	  BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\dell\\Desktop\\ST\\info.csv"));
	  br.readLine();//将表头去除
		String temp = br.readLine();
		temp = br.readLine();
		
		while(temp != null) {

		  String [] split = new String[3];
		  String[] result = temp.split(",");
			  
			  split[0] = result[1];
			  split[1] = result[1].substring(4);
			  split[2] = result.length == 4 ? result[3] : "";
			  list.add(split);
				temp = br.readLine();
			  
		  }
		  
		  
		return list;
	  
  }

  @Before
  public void setUp() throws Exception {
	  String driverPath = System.getProperty("user.dir") + "/src/resource/geckodriver.exe";
	  System.setProperty("webdriver.gecko.driver", driverPath);
	  //System.setProperty ( "webdriver.firefox.bin" , "C:\\Program Files\\Mozilla Firefox\\firefox.exe" );
	  driver = new FirefoxDriver();
	  baseUrl = "https://www.katalon.com/";
	  driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void testBaidu() throws Exception {
	  driver.get("http://121.193.130.195:8800/login");
	  driver.findElement(By.name("id")).click();
      driver.findElement(By.name("id")).clear();
	  driver.findElement(By.name("id")).sendKeys(id);
      driver.findElement(By.name("password")).click();
      driver.findElement(By.name("password")).clear();
    driver.findElement(By.name("password")).sendKeys(password);
    driver.findElement(By.id("btn_login")).click();
    //driver.findElement(By.id("login_form")).click();
    String studentGit = driver.findElement(By.id("student-git")).getText();
    driver.findElement(By.id("btn_logout")).click();
    //driver.findElement(By.id("btn_return")).click();
    //System.out.println(studentGit);
    //System.out.println(github);
    
    assertEquals(github,studentGit);
  }

  @After
  public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }

  private boolean isElementPresent(By by) {
    try {
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }

  private boolean isAlertPresent() {
    try {
      driver.switchTo().alert();
      return true;
    } catch (NoAlertPresentException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}


推荐阅读
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文提供了使用Java实现Bellman-Ford算法解决POJ 3259问题的代码示例,详细解释了如何通过该算法检测负权环来判断时间旅行的可能性。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • Yii 实现阿里云短信发送 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • andr ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 汇编语言等号伪指令解析:探究其陡峭的学习曲线
    汇编语言以其独特的特性和复杂的语法结构,一直被认为是编程领域中学习难度较高的语言之一。本文将探讨汇编语言中的等号伪指令及其对初学者带来的挑战,并结合社区反馈分析其学习曲线。 ... [详细]
author-avatar
雪莲2007019
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有