# check-algorithm **Repository Path**: husterxsp/check-algorithm ## Basic Information - **Project Name**: check-algorithm - **Description**: 检测及分析算法部分 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2018-03-20 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: 毕设 ## README # check-algorithm ### 项目介绍 检测及分析算法部分 ### 算法调用API #### 调用检测算法 ```java USAGE1 package crawldriver; /** * @param resultOutputFolder 抓取结果存放文件夹 * @param browserType 浏览器 从[IE/CHROME/FIREFOX]中选择 * @param ver 浏览器版本号 * @param webUrl 测试网址 */ void crawl(String resultOutputFolder, String browserType, String ver, String webUrl) {}; // test // 此处文件夹中的testid 对应某一次测试id CrawlDriver.crawl("D:/data/result/testid", "FIREFOX", "40", "http://www.baidu.com/"); USAGE2 package crawldriver; /** * @param resultOutputFolder 抓取结果存放文件夹 * @param refBrowserType 参考浏览器 从[IE/CHROME/FIREFOX]中选择 * @param refVer 参考浏览器版本 * @param testBrowserType 待测浏览器 从[IE/CHROME/FIREFOX]中选择 * @param testVer 待测浏览器版本 * @param webUrl 待测网址,如:http://www.baidu.com/ */ void crawl(String resultOutputFolder, String refBrowserType, String refVer, String testBrowserType, String testVer, String webUrl) {}; // test // 此处文件夹中的testid 对应某一次测试id CrawlDriver.crawl("D:/data/result/testid", "IE", "11", "FIREFOX", "31", "http://www.baidu.com/"); USAGE3 package crawldriver; /** * @param resultOutputFolder 抓取结果存放文件夹 * @param refBrowserType 参考浏览器 从[IE/CHROME/FIREFOX]中选择 * @param refVer 参考浏览器版本 * @param testBrowserType 待测浏览器 从[IE/CHROME/FIREFOX]中选择 * @param testVer 待测浏览器版本 * @param webUrl 待测网址,如:http://www.baidu.com/ * @param autharr 登录验证信息 */ void crawl(String resultOutputFolder, String refBrowserType, String refVer, String testBrowserType, String testVer, String webUrl, ArrayList auth) {}; // test // 此处文件夹中的testid 对应某一次测试id // 此用法需要导入jar包:crawljax-core-3.7-SNAPSHOT.jar import java.util.ArrayList; import com.crawljax.browser.ElementType; import com.crawljax.core.Authentication; import com.crawljax.core.state.Identification.How; ArrayList auth = new ArrayList(); String loginUrl = "https://www.eagtek.com/login/"; auth.add(new Authentication(loginUrl, How.name, "username", ElementType.input_text, "abc")); auth.add(new Authentication(loginUrl, How.name, "password", ElementType.input_text, "123")); auth.add(new Authentication(loginUrl, How.className, "ef-button", ElementType.button, "click")); CrawlDriver.crawl("D:/data/result/testid", "CHROME", "63", "https://www.eagtek.com/login/", auth); USAGE4 package crawldriver; /** * @param resultOutputFolder 抓取结果存放文件夹 * @param browserType 浏览器 从[IE/CHROME/FIREFOX]中选择 * @param ver 浏览器版本号 * @param webUrl 测试网址 * @param authJson 登录认证信息json文本, 结构定义见下文[登录认证信息json文本结构定义] */ void crawl(String resultOutputFolder, String browserType, String ver, String webUrl, String authJson) {}; // test // 此处文件夹中的testid 对应某一次测试id CrawlDriver.crawl("/Desktop/test/testid/", "FIREFOX", "40", "http://www.baidu.com/", authJson); 登录认证信息json文本结构定义 String authJson = " [{ "element": "username", //元素标识名称,注意此处名称要求具有唯一性 "elementType": "input_text", //元素类型 目前包括input_text、input_submit、button "how": "name", //元素标识名称类型 目前包括xpath, name, id, tag, text, partialText, className "url": "https://www.eagtek.com/login/", //元素所在网页URL "value": "abc" //如果元素类型为input_text,此处内容将被自动填入该元素, //如果元素类型为input_submit、button等按钮性质的元素,填写"click"将会单击该元素 }, { "element": "password", "elementType": "input_text", "how": "name", "url": "https://www.eagtek.com/login/", "value": "123" }, { "element": "ef-button", "elementType": "button", "how": "className", "url": "https://www.eagtek.com/login/", "value": "click" }] " ``` #### 调用分析算法 ```java package edu.gatech.xpert; /** * @param resultOutputFolder 比较结果输出文件夹,注意此文件夹中应含有爬取结果,否则返回错误信息 * @param compareId 此处的compareId对应每一次比较id, 一个测试中有多个待测浏览器,则每个待测浏览器和参考浏览器对应一个比较id * @param refBrowserType 参考浏览器 从[IE/CHROME/FIREFOX]中选择 * @param refVer 参考浏览器版本号 * @param testBrowserType 待测浏览器 从[IE/CHROME/FIREFOX]中选择 * @param TestVer 待测浏览器版本号 * @param resultUrl 用于存放图片的地址,用于拼接生成的result.json里的图片地址 */ void compare(String resultOutputFolder, String compareId, String refBrowserType, String refVer, String testBrowserType, String testVer, String resultUrl) // test // 函数执行结束生成json文件格式: resultOutputFolder + compareId.json // 如 /Desktop/test/testid/compareId/compareId.json XpertMain.compare("/Desktop/test/testid/", "compareId", "IE", "9", "FIREFOX", "31", "http://127.0.0.1:80/analyse/data/"); ``` ### 分析算法生成json结果文件结构 ``` {"detail": { "compareid": "0001", "layoutissues": [{ "diff": [{ "id": 1, "refinfo": [ { "xpath": "/HTML/BODY/DIV/DIV", "height": 25, "left": 108, "top": 8, "width": 200 }, { "xpath": "/HTML/BODY/DIV", "height": 0,//如果此矩形不存在或无需标记则高度记为0 "left": -1, //如果此矩形不存在或无需标记则左坐标记为-1 "top": -1, //如果此矩形不存在或无需标记则顶坐标记为-1 "width": 0 //如果此矩形不存在或无需标记则宽度记为0 }, ], "testinfo": [ { "xpath": "/HTML/BODY/DIV/DIV", "height": 50, "left": 108, "top": 8, "width": 200 }, { "xpath": "/HTML/BODY/DIV", "height": 50, "left": 108, "top": 8, "width": 200 }, ], "type": "PARENTS DIFFER" }], "refstate": "index", "teststate": "index", "refpicurl": "http://127.0.0.1:80/analyse/data/testid/0002/issues/screenshots_FIREFOX_31/state3.jpg", "testpicurl": "http://127.0.0.1:80/analyse/data/testid/0002/issues/screenshots_IE_11/state6.jpg" }], "refbrowser": "IE", "refver": "11", "testbrowser": "FIREFOX", "testver": "31", "layoutdiffnum":2, }} ``` 整个算法运行结束后的文件目录结构, 以一个参考浏览器,两个待测浏览器为例 - /Desktop/test/ - testid - FIREFOX_31 - IE_9 - CHROME_56 - compareId1 - issues - compareId1.json - compareId2 - issues - compareId2.json ### driver版本配置文件 browserpath应填写浏览器全路径,如:"browserpath": "C:/Program Files/internet explorer/iexplore.exe" driverpath只填写驱动文件名字即可,如:"driverpath": "IEDriverServer.exe",并同时将该驱动文件复制到软件目录下exec文件夹内 ``` { "ie": [ { "ver": "11", "browserpath": "C:/Program Files/internet explorer/iexplore.exe", "driverpath": "IEDriverServer.exe" } ], "firefox": [ { "ver": "29", "browserpath": "C:/Program Files (x86)/Mozilla Firefox 29/firefox.exe", "driverpath": "geckodriver.exe" }, { "ver": "31", "browserpath": "C:/Program Files (x86)/Mozilla Firefox/firefox.exe", "driverpath": "geckodriver.exe" } ], "chrome": [ { "ver": "63", "browserpath": "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe", "driverpath": "chromedriver.exe" } ] } ```