@winning-test/component 0.0.112 → 0.0.114

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winning-test/component",
3
- "version": "0.0.112",
3
+ "version": "0.0.114",
4
4
  "description": "",
5
5
  "main": "",
6
6
  "scripts": {
@@ -88,6 +88,22 @@ class Component extends require("../../../autotest-webui/src/Component") {
88
88
  }
89
89
  }
90
90
  }
91
+
92
+ async waitUntilValueNotTheValue(theValue ='', count = 20) {
93
+ while (count > 0) {
94
+ const value = await this.getValue();
95
+ if (value === theValue) {
96
+ return value;
97
+ } else {
98
+ if (count > 1) {
99
+ count--;
100
+ await this.browser.sleep(500);
101
+ } else {
102
+ throw new Error('等待出现特定value失败');
103
+ }
104
+ }
105
+ }
106
+ }
91
107
  }
92
108
 
93
109
  module.exports = Component;
@@ -1,3 +1,5 @@
1
+ const { Key } = require("@winning-test/autotest-webui");
2
+
1
3
  /**
2
4
  * 选择器组件类
3
5
  * @作者 MaoJJ
@@ -32,22 +34,44 @@ class SelectComponent extends require("./Component") {
32
34
  * @param {...String} items 选项
33
35
  */
34
36
  async select(...items) {
35
- let count = 2;
37
+ let count = 5;
36
38
  while (count > 0) {
37
39
  try {
38
40
  await this._select(...items);
39
- if (items.length > 1 || this.forceMulti){ // 多选不检查value
41
+ await this.browser.sleep(500);
42
+ if (items.length > 1){ // 多选不检查value
40
43
  break;
41
44
  }
42
- const value = await this.getValue();
43
- if (!(value && items.join().indexOf(value) !== -1)) {
44
- throw new Error(`选择${items}失败`);
45
+ if(this.forceMulti) {
46
+ let xpath = ``;
47
+ if(this.label) {
48
+ xpath = `//*[normalize-space(text())='${this.label}']/ancestor-or-self::label/following-sibling::*//span[@class='w-select__tags-text']`;
49
+ }else{
50
+ xpath = `${this.getXpath()}/ancestor-or-self::div[contains(@class, 'w-select')]//span[@class='w-select__tags-text']`;
51
+ }
52
+
53
+ let selected = await (await this.browser.findElement(xpath)).getAttribute('title');
54
+ if(!selected) {
55
+ selected = await (await this.browser.findElement(xpath)).getText();
56
+ }
57
+ if (!(selected && items.join().indexOf(selected) !== -1)) {
58
+ console.log(count, selected);
59
+ await (await this.browser.findElement(this.getXpath())).click();
60
+ await (await this.browser.findElement(this.getXpath())).input(Key.DELETE);
61
+ await (await this.browser.findElement(this.getXpath())).input(Key.DELETE);
62
+ throw new Error(`选择${items}失败`);
63
+ }
64
+ }else {
65
+ const value = await this.getValue();
66
+ if (!(value && items.join().indexOf(value) !== -1)) {
67
+ throw new Error(`选择${items}失败`);
68
+ }
45
69
  }
46
70
  break;
47
71
  } catch (error) {
48
72
  if (count > 1) {
49
73
  count--;
50
- await this.browser.sleep(500);
74
+ await this.browser.sleep(1000);
51
75
  } else {
52
76
  throw error;
53
77
  }
@@ -169,6 +169,19 @@ class Page extends require("@winning-test/autotest-webui").Page {
169
169
  }
170
170
  }
171
171
 
172
+ /**
173
+ * 切换iframe
174
+ */
175
+ async switchToActiveFrame() {
176
+ try {
177
+ await this.browser.switchToFrame();
178
+ await this.browser.switchToFrame("//iframe[@class='url-frame' and (not (ancestor-or-self::*[contains(@style,'display: none')]))]");
179
+ await this.browser.sleep(500);
180
+ } catch (error) {
181
+
182
+ }
183
+ }
184
+
172
185
  /**
173
186
  * 获取菜单组件
174
187
  * @param {String} firstItem 大菜单项
@@ -194,9 +207,30 @@ class Page extends require("@winning-test/autotest-webui").Page {
194
207
  // 数据加载
195
208
  await that.loading();
196
209
  } else {
210
+ const menu_dirt = {
211
+ "排班管理": "体检排班维护",
212
+ "Excel导出任务列表": "Excel导出任务",
213
+ "分科检查": "分科录入",
214
+ "科室维护": "体检科室维护",
215
+ "组合维护": "体检组合维护",
216
+ "收费项目维护": "体检收费项目维护"
217
+ };
218
+ if(menuItem in menu_dirt) {
219
+ menuItem = menu_dirt[menuItem];
220
+ }
221
+ await this.browser.switchToFrame();
197
222
  await that.blockComponent(`//div[@class='more-menu']//div[contains(@class, 'show-more-btn')]`).click();
198
223
  await (await this.browser.findElement(`//div[@class='w-menu-item--content']//*[text()='区域体检']`)).click();
199
224
  await that.blockComponent(`//span[@title='${menuItem}']`).click();
225
+ await that.loading();
226
+ // 切换iframe
227
+ await that.switchToActiveFrame();
228
+ // 页面加载
229
+ await that.loading();
230
+ await that.loading();
231
+ await that.loading();
232
+ // 数据加载
233
+ await that.loading();
200
234
  }
201
235
 
202
236
  }