添加启动IE浏览器方法
This commit is contained in:
parent
547f7da929
commit
3bb5040b82
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
userprojectsettings=false
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -38,6 +38,9 @@ public abstract class AbstractBrower {
|
||||||
*/
|
*/
|
||||||
HashMap<String, Page> pageMap = new HashMap<String, Page>(16);
|
HashMap<String, Page> pageMap = new HashMap<String, Page>(16);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 存储浏览器打开的窗口handle值
|
||||||
|
*/
|
||||||
HashSet<String> windowHandleSet = new HashSet<>();
|
HashSet<String> windowHandleSet = new HashSet<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -180,9 +183,11 @@ public abstract class AbstractBrower {
|
||||||
public WebDriver getDriver() {
|
public WebDriver getDriver() {
|
||||||
// 若driver对象未生成,则进行开启浏览器的操作
|
// 若driver对象未生成,则进行开启浏览器的操作
|
||||||
if (driver == null) {
|
if (driver == null) {
|
||||||
|
// 添加驱动的存储位置
|
||||||
|
System.setProperty(getBrowerDriverSetName(), driverFile.getAbsolutePath());
|
||||||
// 打开浏览器
|
// 打开浏览器
|
||||||
openBrower();
|
openBrower();
|
||||||
|
|
||||||
// 若存在需要打开的页面,则打开第一个页面
|
// 若存在需要打开的页面,则打开第一个页面
|
||||||
if (nowPage != null) {
|
if (nowPage != null) {
|
||||||
openUrl(nowPage, false);
|
openUrl(nowPage, false);
|
||||||
|
@ -196,6 +201,11 @@ public abstract class AbstractBrower {
|
||||||
* 用于打开浏览器
|
* 用于打开浏览器
|
||||||
*/
|
*/
|
||||||
abstract void openBrower();
|
abstract void openBrower();
|
||||||
|
/**
|
||||||
|
* 用于返回浏览器驱动设置的名称,由于每个浏览器不同,导致启动驱动名称也不同
|
||||||
|
* @return 驱动设置名称
|
||||||
|
*/
|
||||||
|
abstract String getBrowerDriverSetName();
|
||||||
|
|
||||||
public String getAllInformation() {
|
public String getAllInformation() {
|
||||||
// 遍历所有标签页,存储标签页信息
|
// 遍历所有标签页,存储标签页信息
|
||||||
|
|
|
@ -13,20 +13,20 @@ import com.alibaba.fastjson.JSONArray;
|
||||||
/**
|
/**
|
||||||
* <p><b>文件名:</b>ChromeBrower.java</p>
|
* <p><b>文件名:</b>ChromeBrower.java</p>
|
||||||
* <p><b>用途:</b>用于启动谷歌浏览器,并加载相应的待测页面,支持对浏览器进行部分个性化的配置,
|
* <p><b>用途:</b>用于启动谷歌浏览器,并加载相应的待测页面,支持对浏览器进行部分个性化的配置,
|
||||||
* 以达到相应的测试效果。使用方法时,必须指定谷歌浏览器驱动所在位置,以保证浏览器能正常启动</p>
|
* 以达到相应的测试效果。</p>
|
||||||
* <p>启动浏览器需要调用{@link #getDriver()}方法启动浏览器,若在构造方法中定义了{@link Page}类,则
|
* <p>启动浏览器需要调用{@link #getDriver()}方法启动浏览器,若在构造方法中定义了{@link Page}类,则
|
||||||
* 启动浏览器时会自动对页面进行加载,若未定义,则只打开浏览器,如:</p>
|
* 启动浏览器时会自动对页面进行加载,若未定义,则只打开浏览器,如:</p>
|
||||||
* <p>
|
* <p>
|
||||||
* 若调用方法:<br>
|
* 若调用方法:<br>
|
||||||
* ChromeBrower chrome = new {@link #ChromeBrower(File)}<br>
|
* ChromeBrower brower = new {@link #ChromeBrower(File)}<br>
|
||||||
* chrome.{@link #getDriver()}<br>
|
* brower.{@link #getDriver()}<br>
|
||||||
* 后将只全屏打开浏览器,不会加载页面
|
* 后将只全屏打开浏览器,不会加载页面
|
||||||
* </p>
|
* </p>
|
||||||
* <p>
|
* <p>
|
||||||
* 若调用方法:<br>
|
* 若调用方法:<br>
|
||||||
* ChromeBrower chrome = new {@link #ChromeBrower(File, Page)}<br>
|
* ChromeBrower brower = new {@link #ChromeBrower(File, Page)}<br>
|
||||||
* 或ChromeBrower chrome = new {@link #ChromeBrower(File, String, String)}<br>
|
* 或ChromeBrower brower = new {@link #ChromeBrower(File, String, String)}<br>
|
||||||
* chrome.{@link #getDriver()}<br>
|
* brower.{@link #getDriver()}<br>
|
||||||
* 后将全屏打开浏览器,并加载相应的页面
|
* 后将全屏打开浏览器,并加载相应的页面
|
||||||
* </p>
|
* </p>
|
||||||
* <p>对于个性化配置,在调用{@link #getDriver()}方法前调用{@link #addConfig(ChromeOptionType)}
|
* <p>对于个性化配置,在调用{@link #getDriver()}方法前调用{@link #addConfig(ChromeOptionType)}
|
||||||
|
@ -35,7 +35,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||||
* <p>若添加配置在调用{@link #getDriver()}方法之后,则设置的配置不会生效。</p>
|
* <p>若添加配置在调用{@link #getDriver()}方法之后,则设置的配置不会生效。</p>
|
||||||
* <p><b>编码时间:</b>2020年4月17日下午2:56:08</p>
|
* <p><b>编码时间:</b>2020年4月17日下午2:56:08</p>
|
||||||
* <p><b>修改时间:</b>2020年11月7日下午7:12:48</p>
|
* <p><b>修改时间:</b>2020年11月7日下午7:12:48</p>
|
||||||
* @author
|
* @author 彭宇琦
|
||||||
* @version Ver1.0
|
* @version Ver1.0
|
||||||
* @since Selenium 3.14.0
|
* @since Selenium 3.14.0
|
||||||
* @since JDK 1.8
|
* @since JDK 1.8
|
||||||
|
@ -46,6 +46,10 @@ public class ChromeBrower extends AbstractBrower {
|
||||||
* 用于存储需要对浏览器进行配置的参数
|
* 用于存储需要对浏览器进行配置的参数
|
||||||
*/
|
*/
|
||||||
HashSet<ChromeOptionType> chromeConfigSet = new HashSet<ChromeOptionType>();
|
HashSet<ChromeOptionType> chromeConfigSet = new HashSet<ChromeOptionType>();
|
||||||
|
/**
|
||||||
|
* 用于对谷歌浏览器的配置
|
||||||
|
*/
|
||||||
|
ChromeOptions chromeOption = new ChromeOptions();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 存储谷歌可执行文件路径
|
* 存储谷歌可执行文件路径
|
||||||
|
@ -95,6 +99,15 @@ public class ChromeBrower extends AbstractBrower {
|
||||||
chromeConfigSet.add(chromeOptionType);
|
chromeConfigSet.add(chromeOptionType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于添加浏览器无需带参数的配置
|
||||||
|
*
|
||||||
|
* @param chromeOptionType 浏览器配置枚举({@link ChromeOptionType}枚举类)
|
||||||
|
*/
|
||||||
|
public void addConfig(ChromeOptionType chromeOptionType) {
|
||||||
|
chromeConfigSet.add(chromeOptionType);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 用于设置谷歌浏览器可执行文件路径,在启动浏览器时,将打开该路径下的浏览器。
|
* 用于设置谷歌浏览器可执行文件路径,在启动浏览器时,将打开该路径下的浏览器。
|
||||||
|
@ -111,15 +124,6 @@ public class ChromeBrower extends AbstractBrower {
|
||||||
driver = null;
|
driver = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 用于添加浏览器无需带参数的配置
|
|
||||||
*
|
|
||||||
* @param chromeOptionType 浏览器配置枚举({@link ChromeOptionType}枚举类)
|
|
||||||
*/
|
|
||||||
public void addConfig(ChromeOptionType chromeOptionType) {
|
|
||||||
chromeConfigSet.add(chromeOptionType);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用于移除相应的浏览器配置
|
* 用于移除相应的浏览器配置
|
||||||
*
|
*
|
||||||
|
@ -138,39 +142,38 @@ public class ChromeBrower extends AbstractBrower {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void openBrower() {
|
void openBrower() {
|
||||||
// 添加谷歌浏览器驱动的存储位置
|
|
||||||
System.setProperty("webdriver.chrome.driver", driverFile.getAbsolutePath());
|
|
||||||
|
|
||||||
ChromeOptions co = new ChromeOptions();
|
|
||||||
//判断是否存在浏览器启动路径
|
//判断是否存在浏览器启动路径
|
||||||
if (binaryFile != null) {
|
if (binaryFile != null) {
|
||||||
co.setBinary(binaryFile);
|
chromeOption.setBinary(binaryFile);
|
||||||
}
|
}
|
||||||
//判断是否存在配置
|
//判断是否存在配置
|
||||||
if (chromeConfigSet.size() != 0) {
|
if (chromeConfigSet.size() != 0) {
|
||||||
co = browerConfig();
|
browerConfig();
|
||||||
}
|
}
|
||||||
driver = new ChromeDriver(co);
|
driver = new ChromeDriver(chromeOption);
|
||||||
|
|
||||||
// 添加操作信息
|
// 添加操作信息
|
||||||
informationJson.put("浏览器名称", ((ChromeDriver) driver).getCapabilities().getBrowserName());
|
informationJson.put("浏览器名称", ((ChromeDriver) driver).getCapabilities().getBrowserName());
|
||||||
informationJson.put("浏览器版本", ((ChromeDriver) driver).getCapabilities().getVersion());
|
informationJson.put("浏览器版本", ((ChromeDriver) driver).getCapabilities().getVersion());
|
||||||
informationJson.put("操作系统版本", System.getProperties().getProperty("os.name"));
|
informationJson.put("操作系统版本", System.getProperties().getProperty("os.name"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String getBrowerDriverSetName() {
|
||||||
|
return "webdriver.chrome.driver";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用于将配置添加至浏览器中
|
* 用于将配置添加至浏览器中
|
||||||
*/
|
*/
|
||||||
ChromeOptions browerConfig() {
|
void browerConfig() {
|
||||||
// 用于存储浏览器的配置信息
|
// 用于存储浏览器的配置信息
|
||||||
JSONArray configJsonArray = new JSONArray();
|
JSONArray configJsonArray = new JSONArray();
|
||||||
// 用于添加配置
|
|
||||||
ChromeOptions chromeOption = new ChromeOptions();
|
|
||||||
|
|
||||||
//若配置中存在控制已打开的浏览器,则直接添加相应的配置,并结束方法,否则会报错
|
//若配置中存在控制已打开的浏览器,则直接添加相应的配置,并结束方法,否则会报错
|
||||||
if (chromeConfigSet.contains(ChromeOptionType.CONTRAL_OPEN_BROWER)) {
|
if (chromeConfigSet.contains(ChromeOptionType.CONTRAL_OPEN_BROWER)) {
|
||||||
chromeOption.setExperimentalOption(ChromeOptionType.CONTRAL_OPEN_BROWER.getKey(), String.valueOf(ChromeOptionType.CONTRAL_OPEN_BROWER.getValue()));
|
chromeOption.setExperimentalOption(ChromeOptionType.CONTRAL_OPEN_BROWER.getKey(), String.valueOf(ChromeOptionType.CONTRAL_OPEN_BROWER.getValue()));
|
||||||
return chromeOption;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 用于存储谷歌浏览器个性化配置
|
// 用于存储谷歌浏览器个性化配置
|
||||||
|
@ -216,7 +219,7 @@ public class ChromeBrower extends AbstractBrower {
|
||||||
// 添加配置信息
|
// 添加配置信息
|
||||||
informationJson.put("浏览器配置", configJsonArray);
|
informationJson.put("浏览器配置", configJsonArray);
|
||||||
|
|
||||||
return chromeOption;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
package pres.auxiliary.work.selenium.brower;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import org.openqa.selenium.ie.InternetExplorerDriver;
|
||||||
|
import org.openqa.selenium.ie.InternetExplorerOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p><b>文件名:</b>IeBrower.java</p>
|
||||||
|
* <p><b>用途:</b>用于启动IE浏览器,并加载相应的待测页面。</p>
|
||||||
|
* <p>启动浏览器需要调用{@link #getDriver()}方法启动浏览器,若在构造方法中定义了{@link Page}类,则
|
||||||
|
* 启动浏览器时会自动对页面进行加载,若未定义,则只打开浏览器,如:</p>
|
||||||
|
* <p>
|
||||||
|
* 若调用方法:<br>
|
||||||
|
* IeBrower brower = new {@link #IeBrower(File)}<br>
|
||||||
|
* brower.{@link #getDriver()}<br>
|
||||||
|
* 后将只全屏打开浏览器,不会加载页面
|
||||||
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* 若调用方法:<br>
|
||||||
|
* IeBrower brower = new {@link #IeBrower(File, Page)}<br>
|
||||||
|
* 或IeBrower brower = new {@link #IeBrower(File, String, String)}<br>
|
||||||
|
* brower.{@link #getDriver()}<br>
|
||||||
|
* 后将全屏打开浏览器,并加载相应的页面
|
||||||
|
* </p>
|
||||||
|
* <p><b>编码时间:</b>2020年11月8日 下午3:52:31</p>
|
||||||
|
* <p><b>修改时间:</b>2020年11月8日 下午3:52:31</p>
|
||||||
|
* @author 彭宇琦
|
||||||
|
* @version Ver1.0
|
||||||
|
* @since JDK 1.8
|
||||||
|
*/
|
||||||
|
public class IeBrower extends AbstractBrower {
|
||||||
|
/**
|
||||||
|
* TODO 用于存储对IE的设置,目前未开发在类中设置IE的方法,此处保留
|
||||||
|
*/
|
||||||
|
private InternetExplorerOptions ieOption = new InternetExplorerOptions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指定驱动文件路径并添加一个待测站点
|
||||||
|
*
|
||||||
|
* @param driverFile 驱动文件对象
|
||||||
|
* @param page {@link Page}类对象
|
||||||
|
*/
|
||||||
|
public IeBrower(File driverFile, Page page) {
|
||||||
|
super(driverFile, page);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指定驱动文件路径并添加一个待测站点
|
||||||
|
*
|
||||||
|
* @param driberFile 驱动文件对象
|
||||||
|
* @param url 待测站点
|
||||||
|
* @param pageName 待测站点名称,用于切换页面
|
||||||
|
*/
|
||||||
|
public IeBrower(File driverFile, String url, String pageName) {
|
||||||
|
super(driverFile, url, pageName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指定驱动文件所在路径
|
||||||
|
*
|
||||||
|
* @param driberFile 驱动文件对象
|
||||||
|
*/
|
||||||
|
public IeBrower(File driverFile) {
|
||||||
|
super(driverFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于对IE浏览器的个性化设置
|
||||||
|
* @param ieOption IE设置类对象({@link InternetExplorerOptions})
|
||||||
|
*/
|
||||||
|
public void setIeOption(InternetExplorerOptions ieOption) {
|
||||||
|
this.ieOption = ieOption;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void openBrower() {
|
||||||
|
//构造浏览器
|
||||||
|
driver = new InternetExplorerDriver(ieOption);
|
||||||
|
//添加浏览器信息
|
||||||
|
informationJson.put("浏览器名称", ((InternetExplorerDriver) driver).getCapabilities().getBrowserName());
|
||||||
|
informationJson.put("浏览器版本", ((InternetExplorerDriver) driver).getCapabilities().getVersion());
|
||||||
|
informationJson.put("操作系统版本", System.getProperties().getProperty("os.name"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String getBrowerDriverSetName() {
|
||||||
|
return "webdriver.ie.driver";
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,85 +0,0 @@
|
||||||
package pres.auxiliary.selenium.operatecontrol;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.openqa.selenium.WebDriver;
|
|
||||||
|
|
||||||
public class TestTextControl {
|
|
||||||
TextEvent tc;
|
|
||||||
WebDriver d;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void openBrowers() {
|
|
||||||
d = new FirefoxBrower("", "pyqone", "http://www.hao123.com").getDriver();
|
|
||||||
tc = new TextEvent(d);
|
|
||||||
tc.setXmlFile(new File("src/test/java/pres/auxiliary/selenium/event/测试.xml"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@After
|
|
||||||
public void closeBrowers() {
|
|
||||||
//d.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test1() {
|
|
||||||
tc.input("呵呵呵", "哈哈哈");
|
|
||||||
try {
|
|
||||||
Thread.sleep(5000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test2() {
|
|
||||||
tc.input("//*[@id=\"search-input\"]", "哈哈哈");
|
|
||||||
try {
|
|
||||||
Thread.sleep(5000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test3() {
|
|
||||||
tc.input("/html/body/div[2]/div[2]/div/div[1]/div[2]/div/div/div[1]/div[3]/form/div[1]/div/input", "哈哈哈");
|
|
||||||
try {
|
|
||||||
Thread.sleep(5000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test4() {
|
|
||||||
tc.input("html body div#skinroot.sk_skin-color-green div.layout-container.s-sbg1 div.layout-container-inner.s-sbg2 div div.hao123-search-panel-box div#hao123-search-panel.g-wd.page-width.hao123-search-panel div.hao123-search.hao123-indexsearchlist1 div#search.search div.right.form-wrapper form#search-form.form-hook div.input-wrapper.wrapper-hook.g-ib div.input-shadow.shadow-hook.g-ib input#search-input.input.input-hook", "哈哈哈");
|
|
||||||
try {
|
|
||||||
Thread.sleep(5000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test5() {
|
|
||||||
tc.input("嘻嘻嘻", "哈哈哈");
|
|
||||||
try {
|
|
||||||
Thread.sleep(5000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test6() {
|
|
||||||
tc.input("嘎嘎嘎", "哈哈哈");
|
|
||||||
try {
|
|
||||||
Thread.sleep(5000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,197 +0,0 @@
|
||||||
package pres.auxiliary.selenium.tool;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
|
|
||||||
import org.testng.annotations.AfterClass;
|
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeClass;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.Test;
|
|
||||||
|
|
||||||
import pres.auxiliary.work.selenium.tool.RecordTool;
|
|
||||||
import pres.auxiliary.work.selenium.tool.RecordType;
|
|
||||||
|
|
||||||
public class RecordToolTest {
|
|
||||||
/**
|
|
||||||
* 文件名
|
|
||||||
*/
|
|
||||||
private final String FILE_NAME = "test";
|
|
||||||
|
|
||||||
private ChromeBrower chrome = new ChromeBrower("Resource/BrowersDriver/chromedriver.exe", 9222);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化数据,并用于测试setSaveFolder、setFileName和setModule方法
|
|
||||||
*/
|
|
||||||
@BeforeClass
|
|
||||||
public void testSetFunction() {
|
|
||||||
RecordTool.getLog().setFileName(FILE_NAME);
|
|
||||||
|
|
||||||
RecordTool.getRecord().setFileName(FILE_NAME);
|
|
||||||
|
|
||||||
RecordTool.getScreenshot().setDriver(chrome.getDriver());
|
|
||||||
|
|
||||||
RecordTool.setModule("第一模块", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 关闭谷歌driver
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
|
||||||
@AfterClass
|
|
||||||
public void closeDriver() throws IOException {
|
|
||||||
chrome.getDriver().quit();
|
|
||||||
RecordTool.createXmindReport("测试报告");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 输出测试方法及分隔符
|
|
||||||
*/
|
|
||||||
@BeforeMethod
|
|
||||||
public void testSetFile(Method method) {
|
|
||||||
System.out.println("-".repeat(20));
|
|
||||||
System.out.println("当前执行方法:" + method.getName());
|
|
||||||
System.out.println("=".repeat(10));
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void endRecord(Method method) {
|
|
||||||
System.out.println(RecordTool.getModuleInformation());
|
|
||||||
System.out.println(RecordTool.getModuleJsonInformation());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 测试RecordStep.getRecordType()方法
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testSetRecordType() {
|
|
||||||
RecordTool.setModule("SetRecordType", true);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testSetRecordType");
|
|
||||||
RecordTool.setRecordType(RecordType.LOG);
|
|
||||||
RecordTool.recordStep("这是testIsRecordStep()方法添加的第1步骤");
|
|
||||||
RecordTool.setRecordType(RecordType.RECORD);
|
|
||||||
RecordTool.recordStep("这是testIsRecordStep()方法添加的第2步骤");
|
|
||||||
RecordTool.setRecordType(RecordType.SCREENSHOT);
|
|
||||||
RecordTool.recordStep("这是testIsRecordStep()方法添加的第3步骤");
|
|
||||||
RecordTool.setRecordType(RecordType.SYSTEM);
|
|
||||||
RecordTool.recordStep("这是testIsRecordStep()方法添加的第4步骤");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 测试RecordStep.setModule(方法)
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testSetAndGetModule() {
|
|
||||||
RecordTool.setModule("第二模块", false);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testSetAndGetModule");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
RecordTool.setModule("第二模块", false);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testSetAndGetModule");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
RecordTool.setModule("第三模块", false);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testSetAndGetModule");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
|
|
||||||
System.out.println(RecordTool.getModuleInformation());
|
|
||||||
System.out.println(RecordTool.getModuleJsonInformation());
|
|
||||||
System.out.println(RecordTool.getModuleInformation("第一模块"));
|
|
||||||
System.out.println(RecordTool.getModuleJsonInformation("第一模块"));
|
|
||||||
System.out.println(RecordTool.getModuleInformation("第四模块"));
|
|
||||||
System.out.println(RecordTool.getModuleJsonInformation("第四模块"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 测试RecordTool.recordStep()方法
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testRecordStep() {
|
|
||||||
RecordTool.setModule("RecordStep", true);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testRecordStep");
|
|
||||||
RecordTool.setRecordType(RecordType.values());
|
|
||||||
RecordTool.recordStep("这是testRecordStep()方法添加的第1步骤");
|
|
||||||
RecordTool.recordStep("这是testRecordStep()方法添加的第2步骤");
|
|
||||||
RecordTool.recordStep("这是testRecordStep()方法添加的第3步骤");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 测试isRecordStep()方法
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testIsRecordStep() {
|
|
||||||
RecordTool.setModule("IsRecordStep", true);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testIsRecordStep");
|
|
||||||
RecordTool.setRecordType(RecordType.values());
|
|
||||||
RecordTool.recordStep("这是testIsRecordStep()方法添加的第1步骤");
|
|
||||||
RecordTool.setRecordStep(false);
|
|
||||||
RecordTool.recordStep("这是testIsRecordStep()方法添加的第2步骤");
|
|
||||||
RecordTool.setRecordStep(true);
|
|
||||||
RecordTool.recordStep("这是testIsRecordStep()方法添加的第3步骤");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 测试recordResult()方法
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testRecordResult() {
|
|
||||||
RecordTool.setModule("RecordResult", true);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testRecordResult");
|
|
||||||
RecordTool.setRecordType(RecordType.values());
|
|
||||||
RecordTool.recordResult(true, "成功", "失败");
|
|
||||||
RecordTool.recordResult(false, "成功", "失败");
|
|
||||||
RecordTool.recordResult(false, "成功");
|
|
||||||
RecordTool.recordResult(true, "失败");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 测试recordMark()方法
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testRecordMark() {
|
|
||||||
RecordTool.setModule("RecordMark", true);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testRecordMark");
|
|
||||||
RecordTool.setRecordType(RecordType.values());
|
|
||||||
RecordTool.recordMark("第1个备注");
|
|
||||||
RecordTool.recordMark("第2个备注");
|
|
||||||
RecordTool.recordMark("第3个备注");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 测试recordException()方法
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testRecordException() {
|
|
||||||
RecordTool.setModule("RecordException", true);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testRecordException");
|
|
||||||
RecordTool.setRecordType(RecordType.values());
|
|
||||||
RecordTool.recordException(new NullPointerException("这是空指针异常"));
|
|
||||||
RecordTool.endRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 记录综合测试
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testRecordAll() {
|
|
||||||
RecordTool.setModule("RecordException", true);
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testRecordAll");
|
|
||||||
RecordTool.setRecordType(RecordType.values());
|
|
||||||
RecordTool.recordStep("第一步");
|
|
||||||
RecordTool.recordStep("第二步");
|
|
||||||
RecordTool.recordResult(true, "这是bug");
|
|
||||||
RecordTool.recordMark("记录一下备注");
|
|
||||||
RecordTool.recordException(new NullPointerException("这是空指针异常"));
|
|
||||||
RecordTool.endRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(priority = 1)
|
|
||||||
public void testGetAllModuleInformation() {
|
|
||||||
RecordTool.startRecord(this.getClass().getName(), "testGetAllModuleInformation");
|
|
||||||
RecordTool.endRecord();
|
|
||||||
System.out.println(RecordTool.getAllModuleInformation());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,150 +0,0 @@
|
||||||
package pres.auxiliary.selenium.tool;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.AfterClass;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.BeforeClass;
|
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Rule;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.rules.TestName;
|
|
||||||
import org.openqa.selenium.TimeoutException;
|
|
||||||
|
|
||||||
import pres.auxiliary.work.selenium.tool.RecordTool;
|
|
||||||
import pres.auxiliary.work.selenium.tool.Screenshot;
|
|
||||||
|
|
||||||
public class TestRecord {
|
|
||||||
@Rule
|
|
||||||
public TestName name = new TestName();
|
|
||||||
static ExcelRecord_Old r;
|
|
||||||
static FirefoxBrower fb;
|
|
||||||
static Event event;
|
|
||||||
static Screenshot sc;
|
|
||||||
|
|
||||||
@BeforeClass
|
|
||||||
public static void open() {
|
|
||||||
fb = new FirefoxBrower("", "", "http://116.10.187.227:88/zentao/user-login.html");
|
|
||||||
fb.getDriver();
|
|
||||||
r.setBrower(fb);
|
|
||||||
r.setActionName("彭宇琦");
|
|
||||||
sc = new Screenshot(fb.getDriver());
|
|
||||||
sc.setSavePath("C:\\AutoTest\\Screenshot\\");
|
|
||||||
sc.setTime(1000);
|
|
||||||
event = Event.newInstance(fb.getDriver());
|
|
||||||
event.setXmlFile(new File("src/test/java/pres/auxiliary/selenium/operation/登录界面.xml"));
|
|
||||||
r = RecordTool.getRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterClass
|
|
||||||
public static void close() {
|
|
||||||
fb.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void startRecord() {
|
|
||||||
r.startRecord(this.getClass().getName(), name.getMethodName());
|
|
||||||
|
|
||||||
r.caseID("Test_01_01");
|
|
||||||
r.caseModule("登录");
|
|
||||||
r.caseTitle("测试非正常登录系统");
|
|
||||||
r.caseCondition("进入登录页面");
|
|
||||||
}
|
|
||||||
|
|
||||||
@After
|
|
||||||
public void endRecord() {
|
|
||||||
r.endRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Ignore
|
|
||||||
@Test
|
|
||||||
public void test1() throws Exception {
|
|
||||||
try {
|
|
||||||
r.caseStep("通过正确的用户名和密码登录");
|
|
||||||
r.caseExpect("能正常登录系统");
|
|
||||||
r.caseFlow("主线流");
|
|
||||||
|
|
||||||
event.getTextEvent().input("禅道用户名", "pengyuqi");
|
|
||||||
event.getTextEvent().input("禅道密码", "123456");
|
|
||||||
event.getClickEvent().click("禅道登录");
|
|
||||||
|
|
||||||
File f = sc.creatImage("正常登录");
|
|
||||||
|
|
||||||
try {
|
|
||||||
event.getClickEvent().click("禅道退出");
|
|
||||||
r.result("输入正确的用户名和密码后能正常登录,测试通过", true);
|
|
||||||
r.runScreenshot(f);
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
r.result("输入正确的用户名和密码后不能正常登录,测试不通过,详见截图:" + f.getAbsolutePath());
|
|
||||||
r.runScreenshot(f);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
r.setException(e);
|
|
||||||
r.errorScreenshot(sc.creatImage("抛出异常"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Ignore
|
|
||||||
@Test
|
|
||||||
public void test2() throws Exception {
|
|
||||||
try {
|
|
||||||
r.caseStep("通过不正确的用户名和密码登录");
|
|
||||||
r.caseExpect("不能正常登录系统");
|
|
||||||
r.caseFlow("备选流1");
|
|
||||||
|
|
||||||
event.getTextEvent().input("禅道用户名", "pengyqi");
|
|
||||||
event.getTextEvent().input("禅道密码", "123456");
|
|
||||||
event.getClickEvent().click("禅道登录");
|
|
||||||
fb.getDriver().switchTo().alert().accept();
|
|
||||||
|
|
||||||
File f = sc.creatImage("不正常登录");
|
|
||||||
|
|
||||||
try {
|
|
||||||
event.getClickEvent().click("禅道退出");
|
|
||||||
r.result("输入不正确的用户名和密码后能正常登录,测试不通过", true);
|
|
||||||
r.runScreenshot(f);
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
r.result("输入不正确的用户名和密码后不能正常登录,测试通过");
|
|
||||||
r.runScreenshot(f);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
r.setException(e);
|
|
||||||
r.errorScreenshot(sc.creatImage("抛出异常"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Ignore
|
|
||||||
@Test
|
|
||||||
public void test3() throws Exception {
|
|
||||||
try {
|
|
||||||
event.getTextEvent().input("禅道用户名", "pengyqi");
|
|
||||||
event.getTextEvent().input("禅道密码2", "123456");
|
|
||||||
event.getClickEvent().click("禅道登录");
|
|
||||||
|
|
||||||
File f = sc.creatImage("乱登录");
|
|
||||||
|
|
||||||
try {
|
|
||||||
event.getClickEvent().click("禅道退出");
|
|
||||||
r.result("输入不正确的用户名和密码后能正常登录,测试不通过,详见截图:" + f.getAbsolutePath());
|
|
||||||
r.runScreenshot(f);
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
r.result("输入不正确的用户名和密码后不能正常登录,测试通过,详见截图:" + f.getAbsolutePath());
|
|
||||||
r.runScreenshot(f);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
r.setException(e);
|
|
||||||
r.errorScreenshot(sc.creatImage("抛出异常"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Ignore
|
|
||||||
@Test
|
|
||||||
public void test4() {
|
|
||||||
r.result("呵呵呵",false);
|
|
||||||
r.result("哈哈哈", true);
|
|
||||||
r.result("嘻嘻嘻");
|
|
||||||
r.result("嘎嘎嘎",true);
|
|
||||||
r.result("唧唧唧");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
package pres.auxiliary.selenium.tool;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import org.junit.AfterClass;
|
|
||||||
import org.junit.BeforeClass;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.openqa.selenium.WebDriverException;
|
|
||||||
|
|
||||||
import pres.auxiliary.work.selenium.tool.Screenshot;
|
|
||||||
|
|
||||||
public class TestScreenshot {
|
|
||||||
static ChromeBrower cb;
|
|
||||||
static Screenshot sc;
|
|
||||||
static Event event;
|
|
||||||
|
|
||||||
@BeforeClass
|
|
||||||
public static void openBrowers() throws InterruptedException {
|
|
||||||
cb = new ChromeBrower("D:\\2.学习\\1.自动化测试\\1.自动化驱动\\chromedriver.exe", "http://116.10.187.227:88");
|
|
||||||
sc = new Screenshot(cb.getDriver());
|
|
||||||
event = Event.newInstance(cb.getDriver());
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterClass
|
|
||||||
public static void closeBrowers() {
|
|
||||||
cb.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testScreenshotToTime() throws InterruptedException, WebDriverException, IOException {
|
|
||||||
sc.screenshotToTime();
|
|
||||||
Thread.sleep(6000);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
package pres.auxiliary.selenium.xml.io;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FileName: TestCreateXML.java
|
|
||||||
*
|
|
||||||
* 用于测试创建xml文件的程序
|
|
||||||
*
|
|
||||||
* @author 彭宇琦
|
|
||||||
* @Deta 2019年1月10日 上午11:35:25
|
|
||||||
* @version ver1.0
|
|
||||||
*/
|
|
||||||
public class TestCreateXML {
|
|
||||||
@Test
|
|
||||||
public void test_01() throws XmlFileNameIsNullException {
|
|
||||||
CreateXml.setMode(CreateXml.XPATH, CreateXml.ID, CreateXml.NAME);
|
|
||||||
CreateXml.setXmlPath("src/test/java/pres/auxiliary/selenium/xml/io/resource/");
|
|
||||||
CreateXml.create(new File("src/test/java/pres/auxiliary/selenium/xml/io/resource").listFiles());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -22,7 +22,7 @@ import pres.auxiliary.work.selenium.brower.ChromeBrower.ChromeOptionType;
|
||||||
* @since JDK 1.8
|
* @since JDK 1.8
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class TestChromeBrower {
|
public class ChromeBrowerTest {
|
||||||
/**
|
/**
|
||||||
* 指向driver文件
|
* 指向driver文件
|
||||||
*/
|
*/
|
||||||
|
@ -36,7 +36,7 @@ public class TestChromeBrower {
|
||||||
/**
|
/**
|
||||||
* 关闭浏览器
|
* 关闭浏览器
|
||||||
*/
|
*/
|
||||||
@AfterClass
|
@AfterClass(alwaysRun = true)
|
||||||
public void quit() {
|
public void quit() {
|
||||||
System.out.println(cb.getAllInformation());
|
System.out.println(cb.getAllInformation());
|
||||||
Scanner sc = new Scanner(System.in);
|
Scanner sc = new Scanner(System.in);
|
|
@ -0,0 +1,49 @@
|
||||||
|
package pres.auxiliary.work.selenium.brower;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import org.testng.annotations.AfterClass;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p><b>文件名:</b>IeBrowerTest.java</p>
|
||||||
|
* <p><b>用途:</b>用于对{@link IeBrower}类进行测试</p>
|
||||||
|
* <p><b>编码时间:</b>2020年11月8日 下午4:54:29</p>
|
||||||
|
* <p><b>修改时间:</b>2020年11月8日 下午4:54:29</p>
|
||||||
|
* @author 彭宇琦
|
||||||
|
* @version Ver1.0
|
||||||
|
* @since JDK 1.8
|
||||||
|
*/
|
||||||
|
public class IeBrowerTest {
|
||||||
|
/**
|
||||||
|
* 指向driver文件
|
||||||
|
*/
|
||||||
|
private final File driverFile = new File("Resource/BrowersDriver/Ie/IEDriverServer.exe");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指向浏览器对象
|
||||||
|
*/
|
||||||
|
IeBrower ib;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关闭浏览器
|
||||||
|
*/
|
||||||
|
@AfterClass(alwaysRun = true)
|
||||||
|
public void quit() {
|
||||||
|
System.out.println(ib.getAllInformation());
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
sc.next();
|
||||||
|
ib.closeBrower();
|
||||||
|
sc.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试打开浏览器后加载预设界面
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void chromeBrowerTest_FilePage() {
|
||||||
|
ib = new IeBrower(driverFile, new Page("https://www.baidu.com", "百度"));
|
||||||
|
ib.getDriver();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,28 +0,0 @@
|
||||||
package test.javase.image;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
public class TestGetImageInformation {
|
|
||||||
static BufferedImage i;
|
|
||||||
|
|
||||||
@BeforeClass
|
|
||||||
public static void newImage() {
|
|
||||||
try {
|
|
||||||
i = ImageIO.read(new File("E:\\测试\\Tsee4j测试\\1.png"));
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test_01_GetWidthAndHight() throws Exception {
|
|
||||||
System.out.println("图片的像素为:" + i.getHeight() + " × " + i.getWidth());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
4
|
|
||||||
5
|
|
||||||
6
|
|
||||||
7
|
|
||||||
8
|
|
||||||
9
|
|
||||||
10
|
|
||||||
11
|
|
||||||
12
|
|
||||||
13
|
|
||||||
14
|
|
||||||
15
|
|
||||||
16
|
|
||||||
17
|
|
||||||
18
|
|
||||||
19
|
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package test.selenium.brower;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.ie.InternetExplorerDriver;
|
||||||
|
import org.openqa.selenium.ie.InternetExplorerOptions;
|
||||||
|
import org.testng.annotations.AfterClass;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p><b>文件名:</b>TestOpenBrower.java</p>
|
||||||
|
* <p><b>用途:</b>用于实验打开各类浏览器</p>
|
||||||
|
* <p><b>编码时间:</b>2020年11月8日 下午2:49:54</p>
|
||||||
|
* <p><b>修改时间:</b>2020年11月8日 下午2:49:54</p>
|
||||||
|
* @author 彭宇琦
|
||||||
|
* @version Ver1.0
|
||||||
|
* @since JDK 12
|
||||||
|
*/
|
||||||
|
public class TestOpenBrower {
|
||||||
|
WebDriver driver;
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public void quit() {
|
||||||
|
driver.quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void openIeBrower() {
|
||||||
|
// File ieDriverFile = new File("Resource/BrowersDriver/Ie/IEDriverServer.exe");
|
||||||
|
// 指定IE driver的存放路径
|
||||||
|
System.setProperty("webdriver.ie.driver", "Resource/BrowersDriver/Ie/IEDriverServer.exe");
|
||||||
|
InternetExplorerOptions ieo = new InternetExplorerOptions();
|
||||||
|
|
||||||
|
//实例化webdriver对象,启动IE浏览器
|
||||||
|
driver = new InternetExplorerDriver();
|
||||||
|
//通过对象driver调用具体的get方法来打开网页
|
||||||
|
driver.get("http://www.baidu.com/");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue