@winning-test/component 0.0.21 → 0.0.23

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.
@@ -16,7 +16,7 @@ class RadioComponent extends require("./Component") {
16
16
 
17
17
  _createXpath() {
18
18
  if (this.label) {
19
- return `//*[normalize-space(text())='${this.label}']/..//input[@type='radio']`;
19
+ return `//*[normalize-space(text())='${this.label}']/ancestor::*[@role='radio']//input`;
20
20
  }
21
21
  return "//input[@type='radio']";
22
22
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winning-test/component",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "description": "",
5
5
  "main": "",
6
6
  "scripts": {
@@ -0,0 +1,58 @@
1
+ /**
2
+ * 表单组件类
3
+ * @作者 MaoJJ
4
+ */
5
+ class FormComponent extends require("./Component") {
6
+
7
+ /**
8
+ * 表单组件
9
+ * @param {Browser} browser 浏览器
10
+ */
11
+ constructor(browser) {
12
+ super(browser);
13
+ }
14
+
15
+ _createXpath() {
16
+ return "//div[@class='detail']";
17
+ }
18
+
19
+ /**
20
+ * 获取表单数据
21
+ */
22
+ async getFormData() {
23
+ let ret = {};
24
+ let xpathTable = `${this.getXpath()}/table`;
25
+ let tables = await this.browser.findElements(xpathTable);
26
+ for (let i = 0; i < tables.length; i++) {
27
+ let xpathTrs = `${xpathTable}[${i + 1}]/tbody/tr`
28
+ let trs = await this.browser.findElements(xpathTrs);
29
+ for (let j = 0; j < trs.length; j++) {
30
+ const tr = trs[j];
31
+ if ((await tr.getAttribute("class")) in { "tr0": "", "head": "", "hide": "" }) {
32
+ continue;
33
+ }
34
+ let style = await tr.getAttribute("style");
35
+ if (style.indexOf("display: none;") !== -1) {
36
+ continue;
37
+ }
38
+ let xpathTds = `${xpathTrs}[${j + 1}]/td`
39
+ let tds = await this.browser.findElements(xpathTds);
40
+ if (tds.length % 2 !== 0) {
41
+ continue;
42
+ }
43
+ for (let k = 0; k < tds.length; k += 2) {
44
+ let label = await tds[k].getText(true);
45
+ label = label.replace(/[  ::]*/g, '');
46
+ let value = await tds[k + 1].getText(true);
47
+ if (label) {
48
+ ret[label] = value;
49
+ }
50
+ }
51
+ }
52
+ }
53
+ return ret;
54
+ }
55
+
56
+ }
57
+
58
+ module.exports = FormComponent;
@@ -2,6 +2,7 @@ const BlockComponent = require("../component/BlockComponent");
2
2
  const ButtonComponent = require("../component/ButtonComponent");
3
3
  const CheckboxComponent = require("../component/CheckboxComponent");
4
4
  const DialogComponent = require("../component/DialogComponent");
5
+ const FormComponent = require("../component/FormComponent");
5
6
  const InputComponent = require("../component/InputComponent");
6
7
  const LeftMenuComponent = require("../component/LeftMenuComponent");
7
8
  const RadioComponent = require("../component/RadioComponent");
@@ -60,6 +61,14 @@ class Page extends require("@winning-test/autotest-webui").Page {
60
61
  return new DialogComponent(this.browser, title);
61
62
  }
62
63
 
64
+ /**
65
+ * 获取表单组件
66
+ * @returns 表单组件
67
+ */
68
+ formComponent() {
69
+ return new FormComponent(this.browser);
70
+ }
71
+
63
72
  /**
64
73
  * 获取输入框组件
65
74
  * @param {String} label 标签
@@ -8,7 +8,7 @@ beforeAll(async () => {
8
8
  await browser.get(config.nation.url);
9
9
  })
10
10
 
11
- test("健康知识库表格", async () => {
11
+ test.skip("健康知识库表格", async () => {
12
12
  const page = new Page(browser);
13
13
  await page.inputComponent(null, "username").input(config.nation.admin.账号);
14
14
  await page.inputComponent(null, "password").input(config.nation.admin.密码);
@@ -68,4 +68,18 @@ test.skip("button/input/select/radio/checkbox/text/dialog", async () => {
68
68
  await page.buttonComponent("取 消").click();
69
69
  await page.switchToDefultFrame();
70
70
  await page.dialogComponent("信息").buttonComponent("确定").click();
71
+ })
72
+
73
+ test("form", async ()=>{
74
+ const page = new Page(browser);
75
+ await page.inputComponent(null, "username").input(config.nation.admin.账号);
76
+ await page.inputComponent(null, "password").input(config.nation.admin.密码);
77
+ await page.blockComponent("//*[@class='signIn']").click();
78
+ await page.topMenuComponent().select("个人档案");
79
+ await page.textComponent("33062100100101326").click();
80
+ await page.loading();
81
+ await page.switchToActiveFrame();
82
+ await page.loading();
83
+ const form = await page.formComponent().getFormData();
84
+ console.log(form);
71
85
  })