selenium自动化测试(初窥门径)

​selenium一个web应用测试工具

这里以谷歌浏览器为样例,下载谷歌浏览器对应的插件

我本机的谷歌 

​​​​​​

谷歌浏览器驱动下载链接

http://chromedriver.storage.googleapis.com/index.htmlhttp://chromedriver.storage.googleapis.com/index.htmlhttp://chromedriver.storage.googleapis.com/index.html
http://npm.taobao.org/mirrors/chromedriver/http://npm.taobao.org/mirrors/chromedriver/http://npm.taobao.org/mirrors/chromedriver/

引入maven的selenium依赖

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.0.0</version>
</dependency>

新建java测试类,将驱动文件与当前类文件放在同目录(或修改一下代码自定目录)

模拟的是打开浏览器,最大化浏览器,在输入框输入内容进行搜索

public class BaiduTest {
	private WebDriver driver;
	private Map<String, Object> vars;
	JavascriptExecutor js;

	@Before
	public void setUp() {
		URL resource = BaiduTest.class.getResource("chromedriver.exe");
		String path = resource.getPath();
		System.setProperty("webdriver.chrome.driver", path);
		driver = new ChromeDriver();
		js = (JavascriptExecutor) driver;
		vars = new HashMap<String, Object>();
	}

	@After
	public void tearDown() throws InterruptedException {
		Thread.sleep(3000);
		driver.quit();
	}

	@Test
	public void test() throws InterruptedException {
		driver.get("https://www.baidu.com");
		driver.manage().window().maximize();
		Thread.sleep(2000);
		driver.findElement(By.id("kw")).click();
		Thread.sleep(500);
		driver.findElement(By.id("kw")).sendKeys("邓霖涛");
		Thread.sleep(1000);
		driver.findElement(By.id("su")).click();
		String pageSource = driver.getPageSource();
		System.out.println(pageSource);

	}
}

那一行System.out.print控制台打印,可以打印网页的内容

 运行测试程序,可看见浏览器是受自动测试程序控制的

后续可以玩下selenium-ide

浏览器的插件下载链接:

https://www.crx4chrome.com/crx/77585/https://www.crx4chrome.com/crx/77585/https://www.crx4chrome.com/crx/77585/

下载会谷歌浏览器点击扩展程序 

安装下载的插件 安装好后

可以打开它,新建项目进行用例测试 

​​

这里使用访问百度网站为例,点击开始

 

  点击开始录制后,会新开一个浏览器,用户在该浏览器的操作将会被录制记录,或者可自行编辑每个步骤的操作命令,下图则是已经录制好的,直接点击执行进行测试

也可以导出对应的不同语言的脚本

 导出的代码,可自行修改下

// Generated by Selenium IDE
import org.junit.Test;
import org.junit.Before;
import org.junit.After;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.core.IsNot.not;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Alert;
import org.openqa.selenium.Keys;
import java.util.*;
import java.net.MalformedURLException;
import java.net.URL;
public class Dlt13Test {
  private WebDriver driver;
  private Map<String, Object> vars;
  JavascriptExecutor js;
  @Before
  public void setUp() {
    driver = new ChromeDriver();
    js = (JavascriptExecutor) driver;
    vars = new HashMap<String, Object>();
  }
  @After
  public void tearDown() {
    driver.quit();
  }
  public String waitForWindow(int timeout) {
    try {
      Thread.sleep(timeout);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    Set<String> whNow = driver.getWindowHandles();
    Set<String> whThen = (Set<String>) vars.get("window_handles");
    if (whNow.size() > whThen.size()) {
      whNow.removeAll(whThen);
    }
    return whNow.iterator().next();
  }
  @Test
  public void dlt13() {
    driver.get("https://www.baidu.com/");
    driver.manage().window().setSize(new Dimension(1536, 824));
    driver.findElement(By.id("kw")).sendKeys("邓霖涛");
    driver.findElement(By.cssSelector(".bdsug-store")).click();
    vars.put("window_handles", driver.getWindowHandles());
    driver.findElement(By.linkText("邓霖涛的博客_CSDN博客-鄙人Java的毕生功力,教你手写各种J...")).click();
    vars.put("win4938", waitForWindow(2000));
    driver.switchTo().window(vars.get("win4938").toString());
  }
}

我的奇葩脑洞:

        改程序原理应该是脚本启动驱动chromedriver.exe程序,脚本程序与驱动程序建立了连接,驱动开启本机的浏览器,驱动根据脚本程序发送的指令,控制了浏览器页面操作行为,浏览器的页面数据反馈通过连接反馈到脚本程序。

该工具可用来做web系统网页功能的自动化测试,可通过脚本模拟用户操作浏览器的行为,进行功能测试.

该脚本在执行中也可输出网页数据,对应也有JavascriptExecutor 等其他API可查询节点,获取节点的数据信息,可作为爬虫用来抓取一些需cookie的网页数据

对于一些网站没有提供接口让外系统接入,如:某些游戏共享账号管理,由经常的租借需经常修改密码,若租借程序无法接入游戏厂商官网系统的密码修改(解冻),可以通过此程序进行接入(不考虑性能)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邓霖涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值