@winning-test/component 0.0.69 → 0.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,7 +44,7 @@ class TableComponent extends require("./Component") {
44
44
  xpath = `(${this.getXpath()}${this._createHeaderXapth()}//tr)[1]/th`;
45
45
  let titles = await this.browser.findElements(xpath);
46
46
  for (let i = 0; i < titles.length; i++) {
47
- titles[i] = (await titles[i].getText(true)).trim();
47
+ titles[i] = ((await titles[i].getText(true)).replaceAll("\n", "")).trim();
48
48
  }
49
49
  // 处理表体
50
50
  xpath = `${this.getXpath()}${this._createBodyXapth()}//tr[contains(@class, 'w-table__row')]`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winning-test/component",
3
- "version": "0.0.69",
3
+ "version": "0.0.71",
4
4
  "description": "",
5
5
  "main": "",
6
6
  "scripts": {
@@ -14,8 +14,8 @@
14
14
  "license": "ISC",
15
15
  "devDependencies": {
16
16
  "@types/jest": "^29.5.3",
17
- "@winning-test/autotest-webui": "^0.1.48",
18
- "chromedriver": "^114.0.3",
19
- "jest": "^29.6.1"
17
+ "@winning-test/autotest-webui": "^0.1.50",
18
+ "chromedriver": "^115.0.1",
19
+ "jest": "^29.6.2"
20
20
  }
21
21
  }
@@ -32,7 +32,7 @@ class CascaderComponent extends require("./Component") {
32
32
  async select(...items) {
33
33
  class ListComponent extends require("./ListComponent") {
34
34
  _createXpath() {
35
- return "//*[contains(@class,'el-scrollbar')]//ul"
35
+ return "//*[contains(@class,'w-scrollbar')]//ul"
36
36
  }
37
37
  }
38
38
  let xpath = this.getXpath();
@@ -55,7 +55,7 @@ class SelectComponent extends require("./Component") {
55
55
  async _select(...items) {
56
56
  class ListComponent extends require("./ListComponent") {
57
57
  _createXpath() {
58
- return "//*[contains(@class,'el-scrollbar')]//ul"
58
+ return "//ul"
59
59
  }
60
60
  }
61
61
  let xpath = this.getXpath();
@@ -47,7 +47,7 @@ class TableComponent extends require("./Component") {
47
47
  titles[i] = (await titles[i].getText(true)).trim() || `#${String(i).padStart(3, "0")}`;
48
48
  }
49
49
  // 处理表体
50
- xpath = `${this.getXpath()}${this._createBodyXapth()}//tr`;
50
+ xpath = `(${this.getXpath()}${this._createBodyXapth()})[1]//tr`;
51
51
  let trs = await this.browser.findElements(xpath);
52
52
  for (let i = 0; i < trs.length; i++) {
53
53
  xpath = `(${this.getXpath()}${this._createBodyXapth()}//tr)[${i + 1}]/td`;
@@ -152,6 +152,115 @@ class Page extends require("@winning-test/autotest-webui").Page {
152
152
  return new RadioComponent(this.browser, label)
153
153
  }
154
154
 
155
+ /**
156
+ * 切换到最外层iframe
157
+ */
158
+ async switchToDefultFrame() {
159
+ await this.browser.switchToFrame();
160
+ }
161
+
162
+ /**
163
+ * 切换到当前活动iframe
164
+ *
165
+ */
166
+ async switchToActiveFrame() {
167
+ try {
168
+ let xpath = "//*[@role='tabpanel'][not(@style='display: none;')]//iframe"
169
+ await this.browser.switchToFrame(xpath);
170
+ } catch (error) {
171
+
172
+ }
173
+ }
174
+
175
+ /**
176
+ * 切换到弹框页面iframe
177
+ *
178
+ */
179
+ async switchToDialogPageFrame() {
180
+ try {
181
+ await this.browser.switchToFrame("//iframe[@class='advice-iframe']");
182
+
183
+ } catch (error) {
184
+
185
+ }
186
+ }
187
+ /**
188
+ * 切换到对应的iframe
189
+ * @param {string} srcTag
190
+ */
191
+ async switchToFrame(srcTag) {
192
+ try {
193
+ await this.browser.switchToFrame(`//iframe[contains(@src,'${srcTag}')]`);
194
+
195
+ } catch (error) {
196
+
197
+ }
198
+ }
199
+ /**
200
+ * 等待加载
201
+ */
202
+ async loading() {
203
+ try {
204
+ const xpath = "//*[@class='datagrid-mask-msg' and (not (ancestor-or-self::*[contains(@style,'display: none')]))]";
205
+ if (await this.browser.isDisplayed(xpath, 200)) {
206
+ await this.browser.waitUntilElementBeNotVisible(xpath);
207
+ }
208
+ xpath = "//*[contains(text(),'拼命加载中')]";
209
+ if (await this.browser.isDisplayed(xpath, 100)) {
210
+ await this.browser.waitUntilElementBeNotVisible(xpath);
211
+ }
212
+ xpath = "//*[@win-loading-text='加载中...']";
213
+ if (await this.browser.isDisplayed(xpath, 100)) {
214
+ await this.browser.waitUntilElementBeNotVisible(xpath);
215
+ }
216
+ } catch (error) {
217
+
218
+ }
219
+ }
220
+
221
+ /**
222
+ * 获取菜单组件
223
+ * @returns 顶部菜单组件
224
+ */
225
+ menuComponent() {
226
+ let that = this;
227
+ class MenuComponent extends require("../component/Component") {
228
+
229
+ /**
230
+ * 选择菜单项
231
+ * @param {String} firstItem 一级菜单项
232
+ * @param {String} secondItem 二级菜单项
233
+ * @param {String} thirdItem 三级菜单项
234
+ */
235
+ async select(firstItem, secondItem, thirdItem) {
236
+ await that.switchToDefultFrame();
237
+ let xpath = "//*[@class='more-menu fr']"
238
+ await this.browser.waitUntilElementBeVisible(xpath)
239
+ xpath = "//*[contains(text(),'...')]";
240
+ await that.blockComponent(xpath).click();
241
+ xpath = `//*[@class='el-scrollbar__view']//*[contains(text(),'${firstItem}')]`;
242
+ await this.browser.waitUntilElementBeVisible(xpath);
243
+ await that.blockComponent(xpath).click();
244
+ await that.loading();
245
+ if (thirdItem) {
246
+ xpath = `//*[@class='menuList']//*[text()='${secondItem}']/ancestor::div//*[text()='${thirdItem}']`;
247
+ await this.browser.waitUntilElementBeVisible(xpath);
248
+ await that.blockComponent(xpath).click();
249
+ await that.loading();
250
+ }
251
+ if (!thirdItem) {
252
+ xpath = `//*[@class='menuList']//*[text()='${secondItem}']`;
253
+ await that.blockComponent(xpath).click();
254
+ await that.loading();
255
+ }
256
+
257
+
258
+ }
259
+
260
+ }
261
+ return new MenuComponent(this.browser);
262
+ }
263
+
155
264
  }
156
265
 
157
266
  module.exports = Page;
@@ -1,6 +1,7 @@
1
1
  const { Browser, Key } = require("@winning-test/autotest-webui");
2
2
  const config = require("./component.test.json");
3
- const Page = require("../page/Page")
3
+ const Page = require("../page/Page");
4
+ const { ENTER } = require("@winning-test/autotest-webui/src/Key");
4
5
  const browser = new Browser();
5
6
 
6
7
  beforeAll(async () => {
@@ -8,19 +9,227 @@ beforeAll(async () => {
8
9
  await browser.get(config.url);
9
10
  })
10
11
 
11
- test("input/button/text", async () => {
12
+ test("input/button", async () => {
12
13
  const page = new Page(browser);
13
- await page.inputComponent("在此键入您的工号/账号").input(config.user.doctor.用户名);
14
- await page.inputComponent("请输入您的密码").input(config.user.doctor.密码);
15
- await page.selectComponent("在此选择院区").select(config.user.doctor.院区);
16
- await page.selectComponent("请选择系统").select(config.user.doctor.系统)
17
- await page.buttonComponent("登录").click();
14
+ await browser.sleep(3000);
15
+ await page.inputComponent("请输入用户名").waitUntilBeVisible();
16
+ await page.inputComponent("请输入用户名").input(config.user.sf.用户名);
17
+ await page.inputComponent("请输入密码").input(config.user.sf.密码);
18
+ await page.buttonComponent("登 录").click();
18
19
  })
19
20
 
20
- test("table", async () => {
21
+
22
+ test.skip("test1", async () => {
21
23
  const page = new Page(browser);
22
- const tableData = await page.blockComponent("//*[@class='table-box']").tableComponent().getTableData();
23
- console.log(tableData);
24
- await page.blockComponent("//*[@class='table-box']").tableComponent().blockComponent(2).doubleClick();
24
+ await page.menuComponent().select("临床诊疗", "门诊医生站");
25
+ await page.switchToActiveFrame();
26
+ await page.buttonComponent("建档挂号").waitUntilBeVisible();
27
+ await page.buttonComponent("建档挂号").click();
28
+ await page.inputComponent("请输入内容").input("赵五");
29
+ await page.inputComponent("请输入内容").input(Key.ENTER);
30
+ let message = await page.blockComponent("//*[@aria-label='提示']//*[@class='w-modal__body']").getText();
31
+ console.log("######message########" + message);
32
+ await page.buttonComponent("取消").click();
33
+ await page.inputComponent("请输入内容").input(Key.BACK_SPACE, Key.BACK_SPACE, Key.BACK_SPACE, Key.BACK_SPACE);
34
+ await page.inputComponent("请输入内容").input("赵五", Key.ENTER);
35
+ let message2 = await page.blockComponent("//*[@aria-label='提示']//*[@class='w-modal__body']").getText();
36
+ console.log("######message2########" + message2);
37
+ await page.buttonComponent("确定").click();
38
+ await page.loading();
39
+ await page.switchToPageFrame("//iframe[@class='third-party-page']");
40
+ await browser.sleep(3000);
41
+ await page.inputComponent("请输入身份证号").input("310101199003072276", Key.ENTER);
42
+ await page.inputComponent("请输入联系电话").input("13354789564", Key.ENTER);
43
+ await page.selectComponent("请选择婚姻状况").select("已婚");
44
+ await page.selectComponent("请选择职业").select("国家公务员");
45
+ await page.selectComponent("请选择文化程度").select("研究生教育");
46
+
47
+ await page.cascaderComponent("请选择籍贯").select("北京市", "东城区");
48
+ await page.selectComponent("请选择民族").select("汉族");
49
+
50
+ await page.cascaderComponent(null, "居住地址").select("安徽省", "合肥市", "蜀山区");
51
+ await page.blockComponent("//*[@class='address-more-detail w-form-item is-label-right w-form-item--medium']").inputComponent("请输入详细地址").input("测试居住地址详细地址最大长度测试居住地址详细地址最大长度测试居住地址详细地址最大长度测试居住地址详细地址最大长度测试居住地址详细地址最大长度");
52
+ await page.buttonComponent("保 存(S)").click();
53
+ //再次切到活动页
54
+ await page.switchToActiveFrame();
55
+ await page.buttonComponent("确定").click();
56
+ await page.buttonComponent("确定").waitUntilBeVisible();
57
+ await page.blockComponent("//*[@class='tooltip-reference info-item w-tooltip__reference']").click();
58
+ await page.selectComponent("请选择科室").select("眼科");
59
+ await page.buttonComponent("查询").click();
25
60
  })
26
61
 
62
+
63
+ test("test2", async () => {
64
+ const page = new Page(browser);
65
+ await page.menuComponent().select("临床诊疗", "门诊医生站");
66
+ await page.switchToActiveFrame();
67
+
68
+
69
+ })
70
+ test.skip("blockComponent", async () => {
71
+ const page = new Page(browser);
72
+ await page.blockComponent("//*[@class='show-more-btn fr blue el-popover__reference']").click();
73
+ })
74
+
75
+ test.skip("iframe/cascaderComponent/selectComponent", async () => {
76
+ const page = new Page(browser);
77
+ await page.menuComponent().select("患者管理", "患者档案");
78
+ await page.switchToActiveFrame();
79
+ await page.buttonComponent("新增").waitUntilBeVisible();
80
+ await page.buttonComponent("新增").click();
81
+ await page.switchToDialogPageFrame();
82
+ await page.loading();
83
+ await browser.sleep(3000);
84
+ await page.inputComponent("请输入姓名").input("张十六哥");
85
+ await page.inputComponent("请输入身份证号").input("31010119900307743X", Key.ENTER);
86
+ await page.selectComponent("请选择婚姻状况").select("已婚");
87
+ await page.selectComponent("请选择婚姻状况").select("丧偶");
88
+ await page.selectComponent("请选择婚姻状况").select("离婚");
89
+ await page.selectComponent("请选择民族").select("汉族");
90
+ await page.cascaderComponent(null, "居住地址").select("北京市", "东城区");
91
+ // await page.buttonComponent("保 存(S)").click();
92
+ })
93
+
94
+ test.skip("table/checkbox/dialog", async () => {
95
+ const page = new Page(browser);
96
+ await page.menuComponent().select("挂号管理", "门诊挂号");
97
+ await page.switchToActiveFrame();
98
+ await page.inputComponent("请输入内容").input("张十五哥", Key.ENTER);
99
+ await page.switchToActiveFrame();
100
+ let list = await page.tableComponent().getTableData();
101
+ // console.log("##############" + JSON.stringify(list[0]));
102
+ console.log(list[0].姓名);
103
+ console.log(list[0].身份证号);
104
+ await page.tableComponent().blockComponent(1, 11).buttonComponent("挂号").click();
105
+ await page.switchToActiveFrame();
106
+ await page.blockComponent("//*[@class='w-tooltip__reference'][contains(text(),'门诊外科')]").click();
107
+ await page.selectComponent(null, "就诊医生:").select("门诊医生");
108
+ await page.checkboxComponent("专家门诊其他费(正高)加收:").select();
109
+ await page.checkboxComponent("门诊其他费:").select();
110
+ await page.blockComponent("//*[contains(text(),'挂号(S)')]").click();
111
+ await page.buttonComponent("确定").click();
112
+ await page.menuComponent().select("患者管理", "患者档案");
113
+ await page.switchToActiveFrame();
114
+ await page.buttonComponent("新增").waitUntilBeVisible();
115
+ await page.buttonComponent("新增").click();
116
+ await page.switchToDialogPageFrame();
117
+ await page.blockComponent("//*[contains(text(),'身份信息')]").waitUntilBeVisible();
118
+ await page.blockComponent("//*[contains(text(),'身份信息')]").click();
119
+ // await page.switchToDefultFrame();
120
+ // await page.blockComponent("//*[@class='account-icon icon-logout']").waitUntilBeVisible();
121
+ // await page.blockComponent("//*[@class='account-icon icon-logout']").click();
122
+ // await page.dialogComponent("提示").buttonComponent("确定").click();
123
+ })
124
+
125
+ test.skip("Radio/MessageComponent", async () => {
126
+ const page = new Page(browser);
127
+ await page.menuComponent().select("基础框架", "系统管理", "系统参数");
128
+ await page.switchToActiveFrame();
129
+ await page.inputComponent("请输入参数编号").input("C108");
130
+ await page.buttonComponent("查询").click();
131
+ let list = await page.tableComponent().getTableData();
132
+ console.log("##############" + JSON.stringify(list[0]));
133
+ await page.tableComponent().blockComponent(1, 8).buttonComponent("修改").click();
134
+ await page.dialogComponent("修改").selectComponent(null, "配置值").select("否");
135
+ await page.dialogComponent("修改").buttonComponent("保存").click();
136
+ let res = await page.messageComponent("修改成功").isDisplayed(200);
137
+ console.log("#######res#######" + res);
138
+
139
+ await page.menuComponent().select("门诊管理", "挂号管理", "门诊挂号");
140
+ await page.switchToActiveFrame();
141
+ await page.inputComponent("请输入内容").input("张西瓜5");
142
+ await page.inputComponent("请输入内容").input(Key.ENTER);
143
+ let message = await page.dialogComponent("提示").blockComponent("//*[@class='w-message-box__message']").getText();
144
+ console.log("######message########" + message);
145
+ await page.dialogComponent("提示").buttonComponent("取消").click();
146
+ // await page.inputComponent("请输入内容").clear();
147
+ await page.inputComponent("请输入内容").input(Key.BACK_SPACE, Key.BACK_SPACE, Key.BACK_SPACE, Key.BACK_SPACE);
148
+ await page.inputComponent("请输入内容").input("张西瓜5", Key.ENTER);
149
+ let message2 = await page.dialogComponent("提示").blockComponent("//*[@class='w-message-box__message']").getText();
150
+ console.log("######message2########" + message2);
151
+ await page.dialogComponent("提示").buttonComponent("确定").click();
152
+ await page.loading();
153
+ await page.switchToDialogPageFrame();
154
+ await browser.sleep(3000);
155
+ await page.inputComponent("请输入身份证号").input("310101199003079494", Key.ENTER);
156
+ await page.inputComponent("请输入联系电话").input("13354789564", Key.ENTER);
157
+
158
+ // await page.selectComponent("请选择婚姻状况").select("已婚");
159
+ await page.selectComponent("请选择职业").select("国家公务员");
160
+ await page.selectComponent("请选择文化程度").select("研究生教育");
161
+
162
+ await page.cascaderComponent("请选择籍贯").select("北京市", "东城区");
163
+ await page.selectComponent("请选择民族").select("汉族");
164
+
165
+ await page.cascaderComponent(null, "居住地址").select("安徽省", "合肥市", "蜀山区");
166
+ await page.blockComponent("//*[@class='address-more-detail w-form-item is-label-right w-form-item--medium']").inputComponent("请输入详细地址").input("测试居住地址详细地址最大长度测试居住地址详细地址最大长度测试居住地址详细地址最大长度测试居住地址详细地址最大长度测试居住地址详细地址最大长度");
167
+ await page.buttonComponent("保 存(S)").click();
168
+
169
+ await page.switchToActiveFrame();
170
+ await page.radioComponent("列表").select();
171
+ await page.radioComponent("卡片").select();
172
+ await page.blockComponent("//*[@class='w-tooltip__reference'][contains(text(),'门诊外科')]").click();
173
+ await page.selectComponent(null, "就诊医生:").select("门诊医生");
174
+ await page.radioComponent("初诊").select();
175
+ await page.checkboxComponent("专家门诊其他费(正高)加收:").select();
176
+
177
+ await page.checkboxComponent("预览").select();
178
+ await page.blockComponent("//*[contains(text(),'挂号(S)')]").click();
179
+ await page.buttonComponent("确定").click();
180
+
181
+ // await page.menuComponent().select("临床诊疗", "门诊日志(科室)");
182
+ // await page.menuComponent().select("临床诊疗", "处方模板管理");
183
+ // await page.menuComponent().select("临床诊疗", "门诊医生站");
184
+ // await page.menuComponent().select("门诊管理", "收费管理", "日结查询");
185
+ // await page.menuComponent().select("门诊管理", "患者管理", "患者档案");
186
+ // await page.menuComponent().select("门诊管理", "挂号管理", "门诊挂号");
187
+
188
+ // await page.inputComponent("开始日期").clear();
189
+ // await page.inputComponent("结束日期").clear();
190
+ // await page.inputComponent("开始日期").input("", Key.ENTER);
191
+ // await page.inputComponent("结束日期").input("", Key.ENTER);
192
+
193
+ //有问题
194
+ // await page.inputComponent("开始日期").input("2023-07-01 00:00:00",Key.ENTER);
195
+ // await page.inputComponent("结束日期").input("2023-07-26 00:00:00",Key.ENTER);
196
+ // await page.blockComponent('//*[@id="app"]/div[1]/div[1]/div/div[1]/span/span').selectComponent("请选择").select("院内登记");
197
+ // await page.buttonComponent("查询").click();
198
+ // await page.menuComponent().select("挂号管理", "门诊挂号");
199
+ // await page.switchToActiveFrame();
200
+ // await page.inputComponent("请输入内容").input("张十五哥");
201
+ // await page.inputComponent("科室名称/编码").input("门诊");
202
+ // let res = await browser.isDisplayed("//*[@id='app']/div[1]/div[1]/section/div[1]/div[1]/div[2]/label[2]/span[1]/input");
203
+ // console.log("##############"+res);
204
+ // await page.radioComponent("列表").waitUntilBeVisible();
205
+ // await page.radioComponent("列表").select();
206
+ // await page.radioComponent("复诊").waitUntilBeVisible();
207
+ // await page.radioComponent("复诊").select();
208
+
209
+ // await page.menuComponent().select("收费管理", "日结查询");
210
+ // await page.switchToActiveFrame();
211
+ // await page.radioComponent("已审核").waitUntilBeVisible();
212
+ // await page.radioComponent("已审核").select();
213
+
214
+ // await page.menuComponent().select("收费管理", "门诊费用查询");
215
+ // await page.switchToActiveFrame();
216
+ // await page.inputComponent("请输入内容").input("张五哥");
217
+ // await page.buttonComponent("查询").click();
218
+ // let list = await page.tableComponent().getTableData();
219
+ // console.log("######length########" + list.length);
220
+ // console.log("##############" + JSON.stringify(list[0]));
221
+
222
+ // await page.tableComponent().blockComponent(1, 19).buttonComponent("账单详情").click();
223
+ // await page.switchToActiveFrame();
224
+ // let list2 = await page.blockComponent("//*[@class='w-col w-col-16']").tableComponent().getTableData();
225
+ // console.log("######length########" + list2.length);
226
+ // console.log("##############" + JSON.stringify(list2[0]));
227
+
228
+ // let list3 = await page.blockComponent("//*[@class='w-col w-col-8']").tableComponent().getTableData();
229
+ // console.log("######length########" + list3.length);
230
+ // console.log("##############" + JSON.stringify(list3[0]));
231
+ })
232
+
233
+ test.skip("return", async () => {
234
+ await browser.quit();
235
+ })
@@ -1,15 +1,15 @@
1
1
  {
2
- "url": "http://101.34.221.139:85/portal/#/login",
2
+ "url": "http://172.17.0.82:10000/basic-frame/#/",
3
3
  "user": {
4
- "admin": {
5
- "用户名": "6618",
6
- "密码": "456"
4
+ "sf": {
5
+ "用户名": "cs003",
6
+ "密码": "cs003",
7
+ "院区": "xxxxx"
7
8
  },
8
9
  "doctor": {
9
- "用户名": "6618",
10
- "密码": "456",
11
- "院区": "铜陵五院(RC1)",
12
- "系统": "门诊医生站"
10
+ "用户名": "cs001",
11
+ "密码": "cs001",
12
+ "院区": "xxxxx"
13
13
  }
14
14
  }
15
15
  }