栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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依赖


    org.seleniumhq.selenium
    selenium-java
    3.0.0

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

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

public class BaiduTest {
	private WebDriver driver;
	private Map 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();
	}

	@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 vars;
  JavascriptExecutor js;
  @Before
  public void setUp() {
    driver = new ChromeDriver();
    js = (JavascriptExecutor) driver;
    vars = new HashMap();
  }
  @After
  public void tearDown() {
    driver.quit();
  }
  public String waitForWindow(int timeout) {
    try {
      Thread.sleep(timeout);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    Set whNow = driver.getWindowHandles();
    Set whThen = (Set) 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的网页数据

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467821.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号