個前后端分離的Java快速開發(fā)平臺,基于SpringBoot2.X、Mybatis-Plus3.X。支持 Oracle、MySQL、DB2、Postgre、MariaDB、H2、HSQL、SQLite、SQLServer2005、SQLServer 等多種數(shù)據(jù)庫。
項目說明
優(yōu)勢
技術(shù)選型:
- Spring Boot 2.1.0.RELEASE - Apache Shiro 1.4.0 - Spring MVC 5.1.2 - MyBatis 3.5.0、MyBatis-Plus 3.1.0 - Quartz 2.3.0 - Druid 1.1.10 - lombok 1.18.4 - swagger 2.9.2 - jwt 0.9.1 - easypoi 4.0.0
項目結(jié)構(gòu)
platform-plus
├─sql 項目SQL語句
│
├─common 公共模塊
│ ├─annotation 自定義注解
│ ├─aspect 系統(tǒng)日志、redis存儲
│ ├─exception 異常處理
│ ├─interceptor 日志攔截器
│ ├─session 分布式session管理
│ ├─utils 工具類
│ ├─validator 后臺校驗
│ └─xss XSS過濾
│
├─config 配置信息
│
├─datascope 數(shù)據(jù)權(quán)限攔截器
│
├─datasources 多數(shù)據(jù)源
│
├─modules 功能模塊
│ ├─app API接口模塊(APP調(diào)用)
│ ├─gen 代碼生成模塊
│ ├─job 定時任務(wù)模塊
│ ├─oss 文件服務(wù)模塊
│ ├─swaggerbootstrapui 自定義swagger文檔模塊
│ └─sys 權(quán)限模塊
│
├─PlatformPlusApplication 項目啟動類
│
├──resources
│ ├─gen 代碼生成工具
│ ├─mapper SQL對應(yīng)的XML文件
│ └─static 自定義swagger文檔
實現(xiàn)功能
- 系統(tǒng)管理 - 菜單管理 - 組織機構(gòu) - 系統(tǒng)參數(shù) - 字典管理 - 文件上傳 - 系統(tǒng)日志 - 權(quán)限管理 - 管理員列表 - 角色管理 - 短信平臺 - 短信配置 - 任務(wù)調(diào)度 - 定時任務(wù) - 開發(fā)工具 - 在線用戶管理 - 緩存信息 - SQL監(jiān)控 - 接口文檔 - 代碼生成器
項目演示
效果圖:
后端部署
# 在centos7 ~ 創(chuàng)建一個文件夾docker,里面放置Dockerfile 和 mvn 打包的項目platform-plus.jar # 在該docker文件下 指令: docker build -t docker . # 運行 Docker Image docker run -d -p 8888:8888 docker
個前后端分離的Java快速開發(fā)平臺,基于SpringBoot2.X、Mybatis-Plus3.X。支持 Oracle、MySQL、DB2、Postgre、MariaDB、H2、HSQL、SQLite、SQLServer2005、SQLServer 等多種數(shù)據(jù)庫。
- Spring Boot 2.1.0.RELEASE - Apache Shiro 1.4.0 - Spring MVC 5.1.2 - MyBatis 3.5.0、MyBatis-Plus 3.1.0 - Quartz 2.3.0 - Druid 1.1.10 - lombok 1.18.4 - swagger 2.9.2 - jwt 0.9.1 - easypoi 4.0.0
platform-plus ├─sql 項目SQL語句 │ ├─common 公共模塊 │ ├─annotation 自定義注解 │ ├─aspect 系統(tǒng)日志、redis存儲 │ ├─exception 異常處理 │ ├─interceptor 日志攔截器 │ ├─session 分布式session管理 │ ├─utils 工具類 │ ├─validator 后臺校驗 │ └─xss XSS過濾 │ ├─config 配置信息 │ ├─datascope 數(shù)據(jù)權(quán)限攔截器 │ ├─datasources 多數(shù)據(jù)源 │ ├─modules 功能模塊 │ ├─app API接口模塊(APP調(diào)用) │ ├─gen 代碼生成模塊 │ ├─job 定時任務(wù)模塊 │ ├─oss 文件服務(wù)模塊 │ ├─swaggerbootstrapui 自定義swagger文檔模塊 │ └─sys 權(quán)限模塊 │ ├─PlatformPlusApplication 項目啟動類 │ ├──resources │ ├─gen 代碼生成工具 │ ├─mapper SQL對應(yīng)的XML文件 │ └─static 自定義swagger文檔
- 系統(tǒng)管理 - 菜單管理 - 組織機構(gòu) - 系統(tǒng)參數(shù) - 字典管理 - 文件上傳 - 系統(tǒng)日志 - 權(quán)限管理 - 管理員列表 - 角色管理 - 短信平臺 - 短信配置 - 任務(wù)調(diào)度 - 定時任務(wù) - 開發(fā)工具 - 在線用戶管理 - 緩存信息 - SQL監(jiān)控 - 接口文檔 - 代碼生成器
https://gitee.com/fuyang_lipengjun/platform-plus
ppium是什么
Appium是一款用于測試MobileApp的開源自動化測試框架。它是通過使用WebDriver[Facebook開源]協(xié)議來測試iOS,Android,WindowsApp的。WebDriver與Selenium有著千絲萬縷的聯(lián)系,很多方法的使用都很相似。
Appium支持多種語言。
>>Ruby
>>Python
>>Java
>>JavaScript
>>PHP
>>C#
>>Objective-C
根據(jù)先后順序,官方的支持力度也不同。Ruby官方支持的最好(Appiumconsole就是使用Ruby開發(fā)的)。
Appium iOS測試環(huán)境搭建方法
Appium分為UI版本與命令行版本兩種。不同在于UI版本的自帶有圖形界面,用戶體驗相對于命令行版本好。
常見依賴庫的搭建
1.安裝libimobiledevice
2.安裝 appium-doctor
代碼1:npm install appium-doctor -g
appium-doctor --ios // appium-doctor 安裝完成后執(zhí)行,查看 iOS 相關(guān)配置是否成功。如果存在紅叉情況,安裝對應(yīng)的工具就可以了。
代碼2:
3.下載 WebDriverAgent
>>進入下載后的 WebDriverAgent 文件夾
>>執(zhí)行 ./Scripts/bootstrap.sh
>>直接用Xcode打開 WebDriverAgent.xcodepro 文件
>>配置WebDriverAgentLib和WebDriverAgentRunner的證書
>>連接并選擇自己的iOS設(shè)備,然后按Cmd+U,或是點擊Product->Test
>>運行成功時,在Xcode控制臺應(yīng)該可以打印出一個Ip地址和端口號
命令行版本的搭建
1.安裝 Appium
2.替換 WebDriverAgent
使用上面修改過的 WebDriverAgent 替換/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver 此處的WebDriverAgent
UI 版本的搭建
1.下載Appium Desktop
2.替換 WebDriverAgent
使用上面修改過的 WebDriverAgent 替換/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/ 此處的WebDriverAgent
開發(fā)環(huán)境搭建
1.安裝 Appium Python 環(huán)境搭建
安裝 Appium 的時候遇到的錯誤
2.AssertionError: Message: An unknown server-side error occurred while processing the command. Original error: Unknown device or simulator UDID: '*'
3.Could not initialize ios-deploy make sure it is installed (npm install -g ios-deploy) and works on your system
4.npm install -g ios-deploy 失敗問題的解決方法
Appium 使用
Appium-Desktop 的使用
>>準(zhǔn)備一個 ipa 或者 app 包。
>>運行Appium-Desktop
>>開啟start server
>>點擊start new session
>>在 Desired Capabilities 中輸入相關(guān)的參數(shù)后點擊Start Session
>>運行成功后,會彈出一個控制界面,在該界面中可以控制手機上正在運行的程序
>>點擊界面上方中心的錄制按鈕,可以將你對手機端的操作代碼化。生成的代碼可以直接放入指定的代碼中去執(zhí)行。
>>在 UI 界面上我們可以查看App UI 層次結(jié)構(gòu),可以選擇對應(yīng)的控件。可以查看選中的 UI 控件的各種值(下圖右下角所示),也可以對選中的空間進行點擊,輸入值,清空值操作
>>如上圖所示。我們還可以針對需要使用坐標(biāo)系統(tǒng)(不通用。因為不同的設(shè)備分辨率不同)點擊,手勢操作等。
關(guān)于在代碼中如何使用 Appium
本例中使用 Python 為主要部分。
1.連接 Appium
path="/Users/jack/Desktop/xx/xx/xx.ipa"
desired_caps={
'app': os.path.abspath(path),
'platformName': 'iOS',
'platformVersion': '11.2.2',
'deviceName': 'iPad',
'udid': 'xxx',
'showIOSLog': 'true'
}
command_executor='http://127.0.0.1:4723/wd/hub'
appium_driver=webdriver.Remote(command_executor=command_executor, desired_capabilities=desired_caps)
```
**appium_driver** 就是我們需要的接入點。
2.獲取當(dāng)前頁面層次結(jié)構(gòu)
page_source 是 XML 文本。例子解析 XML 之后就可以看到整個頁面的布局。
注意: 論壇中有說過當(dāng)頁面數(shù)據(jù)過多的時候,可能會出現(xiàn)超時錯誤問題。
3.查找指定的 UI 元素
查找 UI 元素的方式有很多種。
>>AccessibilityIdentifier 方式查找。推薦
>>AccessibilityIdentifier 方式查找。不推薦,但是必須的時候還是要用
4.獲取查找到的控件的值
5.已經(jīng)查找到的控件點擊,輸入值,清空值操作
6.長按操作
略
7.簡單的手勢滑動操作
8.等待頁面消失
try:
# 在 60s 每隔 0.5s 檢查是否 view 消失
WebDriverWait(driver, 60, 0.5, ElementNotVisibleException).until_not(lambda x: x.find_element_by_accessibility_id(view).is_displayed())
except TimeoutException, e:
print("time out message")
raise e
9.等待頁面出現(xiàn)
try:
# 在 60s 每隔 0.5s 檢查是否 view 出現(xiàn)
WebDriverWait(driver, 60, 0.5, ElementNotVisibleException).until(lambda x: x.find_element_by_accessibility_id(view).is_displayed())
except TimeoutException, e:
print("time out message")
raise e
iOS 設(shè)備獲取對應(yīng)的控件的方法
對于 iOS 端,WebDriver 使用了蘋果提供的 Accessibility Inspector 來獲取頁面層次。因此,在編寫代碼的時候,需要設(shè)置
iOS 代碼使用 Appium 建議條件滿足isAccessibilityElement為 true。同時accessibilityIdentifier建議有值。這樣查找的時候在編寫代碼會更加便捷。否則就需要如下的方式去查找:
driver.find_element_by_xpath("http://XCUIElementTypeApplication[@name=\"LLL\"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeCollectionView/XCUIElementTypeCell")
上面的代碼是去查找一個 tableview cell。當(dāng)然我們可以使用 UI 工具獲取到。但是當(dāng)頁面 ui 層次變更了,估計改動的時候會有想死的感覺了。
iOS 設(shè)備使用 Appium 的條件
iOS 設(shè)備使用 Appium 的限制
關(guān)于測試結(jié)果反饋
Appium 只是一款測試 Mobile 端 app 的框架。其本身的操作僅限于針對 App 進行測試,不具備生成測試結(jié)果,發(fā)送郵件等功能。如果想要該功能,需要在調(diào)用 Appium 的語言環(huán)境上思考。
由于 Demo 中使用的是 Python,因此使用 HTMLTestRunner 生成 html 格式的測試報告是最合適的方式。并且根據(jù) Python 編程發(fā)送郵件給指定的用戶。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。