robo_appian 0.0.2__tar.gz → 0.0.4__tar.gz

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.

Potentially problematic release.


This version of robo_appian might be problematic. Click here for more details.

Files changed (35) hide show
  1. robo_appian-0.0.4/MANIFEST.in +7 -0
  2. robo_appian-0.0.4/PKG-INFO +163 -0
  3. robo_appian-0.0.4/README.md +122 -0
  4. {robo_appian-0.0.2 → robo_appian-0.0.4}/pyproject.toml +8 -1
  5. {robo_appian-0.0.2 → robo_appian-0.0.4}/robo_appian/__init__.py +13 -1
  6. robo_appian-0.0.4/robo_appian/utils/__init__.py +1 -0
  7. robo_appian-0.0.4/robo_appian/utils/components/__init__.py +1 -0
  8. robo_appian-0.0.4/robo_appian/utils/controllers/__init__.py +1 -0
  9. robo_appian-0.0.4/robo_appian/utils/exceptions/__init__.py +1 -0
  10. robo_appian-0.0.4/robo_appian.egg-info/PKG-INFO +163 -0
  11. robo_appian-0.0.4/robo_appian.egg-info/SOURCES.txt +31 -0
  12. robo_appian-0.0.4/robo_appian.egg-info/dependency_links.txt +1 -0
  13. robo_appian-0.0.4/robo_appian.egg-info/requires.txt +3 -0
  14. robo_appian-0.0.4/robo_appian.egg-info/top_level.txt +2 -0
  15. robo_appian-0.0.4/robo_appian_source_backup/__init__.py +23 -0
  16. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/DropdownUtils.py +8 -8
  17. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/InputUtils.py +8 -4
  18. robo_appian-0.0.4/setup.cfg +4 -0
  19. robo_appian-0.0.4/setup.py +66 -0
  20. robo_appian-0.0.2/PKG-INFO +0 -91
  21. robo_appian-0.0.2/README.md +0 -73
  22. {robo_appian-0.0.2 → robo_appian-0.0.4}/LICENSE +0 -0
  23. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/__init__.py +0 -0
  24. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/ButtonUtils.py +0 -0
  25. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/ComponentUtils.py +0 -0
  26. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/DateUtils.py +0 -0
  27. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/LabelUtils.py +0 -0
  28. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/LinkUtils.py +0 -0
  29. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/TabUtils.py +0 -0
  30. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/TableUtils.py +0 -0
  31. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/components/__init__.py +0 -0
  32. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/controllers/ComponentDriver.py +0 -0
  33. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/controllers/__init__.py +0 -0
  34. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/exceptions/MyCustomError.py +0 -0
  35. {robo_appian-0.0.2/robo_appian → robo_appian-0.0.4/robo_appian_source_backup}/utils/exceptions/__init__.py +0 -0
@@ -0,0 +1,7 @@
1
+ include README.md
2
+ include LICENSE
3
+ include setup.py
4
+ recursive-include robo_appian *.py
5
+ recursive-include robo_appian *.pyc
6
+ global-exclude __pycache__
7
+ global-exclude *.py[co]
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: robo_appian
3
+ Version: 0.0.4
4
+ Summary: Selenium-based automation utilities for Appian applications
5
+ Home-page: https://github.com/yourusername/robo_appian
6
+ Author: Your Name
7
+ Author-email: your.email@example.com
8
+ Project-URL: Bug Reports, https://github.com/yourusername/robo_appian/issues
9
+ Project-URL: Source, https://github.com/yourusername/robo_appian
10
+ Project-URL: Documentation, https://robo-appian.readthedocs.io/
11
+ Keywords: selenium,automation,testing,appian,ui
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Topic :: Software Development :: Testing
15
+ Classifier: Topic :: Software Development :: Quality Assurance
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: selenium>=4.34.0
27
+ Requires-Dist: requests>=2.25.0
28
+ Requires-Dist: numpy>=1.21.0
29
+ Dynamic: author
30
+ Dynamic: author-email
31
+ Dynamic: classifier
32
+ Dynamic: description
33
+ Dynamic: description-content-type
34
+ Dynamic: home-page
35
+ Dynamic: keywords
36
+ Dynamic: license-file
37
+ Dynamic: project-url
38
+ Dynamic: requires-dist
39
+ Dynamic: requires-python
40
+ Dynamic: summary
41
+
42
+ # Robo Appian
43
+
44
+ **Automate your Appian code testing with Python. Boost quality, save time.**
45
+
46
+ [![PyPI version](https://badge.fury.io/py/robo-appian.svg)](https://badge.fury.io/py/robo-appian)
47
+ [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
48
+ [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue.svg)](https://dinilmithra.github.io/robo_appian/)
49
+
50
+ ## 🚀 Quick Start
51
+
52
+ ### Installation
53
+
54
+ ```bash
55
+ pip install robo-appian
56
+ ```
57
+
58
+ ### Basic Usage
59
+
60
+ ```python
61
+ from selenium import webdriver
62
+ from selenium.webdriver.support.ui import WebDriverWait
63
+ from robo_appian import ButtonUtils, InputUtils, TableUtils
64
+
65
+ # Setup your driver
66
+ driver = webdriver.Chrome()
67
+ wait = WebDriverWait(driver, 10)
68
+
69
+ # Interact with Appian components
70
+ ButtonUtils.click(wait, "Submit")
71
+ InputUtils.set_text(wait, "Username", "john.doe")
72
+ TableUtils.click_cell_link(wait, "Actions", 1, "Edit")
73
+ ```
74
+
75
+ ## 📚 Features
76
+
77
+ ### Components
78
+ - **ButtonUtils**: Find and click buttons
79
+ - **DateUtils**: Interact with date fields and date pickers
80
+ - **DropdownUtils**: Interact with dropdown/select components
81
+ - **InputUtils**: Interact with input fields and text areas
82
+ - **LabelUtils**: Find and interact with labels
83
+ - **LinkUtils**: Click links and navigate
84
+ - **TableUtils**: Interact with tables and grids
85
+ - **TabUtils**: Switch between tabs
86
+ - **ComponentUtils**: General component utilities
87
+
88
+ ### Controllers
89
+ - **ComponentDriver**: High-level interface for component interaction
90
+
91
+ ### Exceptions
92
+ - **MyCustomError**: Custom exceptions for better error handling
93
+
94
+ ## 📖 Documentation
95
+
96
+ Visit our [full documentation](https://dinilmithra.github.io/robo_appian/) for:
97
+ - Detailed API reference
98
+ - Complete examples and tutorials
99
+ - Installation guide
100
+ - Best practices
101
+
102
+ ## 🛠️ Requirements
103
+
104
+ - Python 3.12+
105
+ - Selenium WebDriver 4.34.0+
106
+ - Compatible web browser (Chrome, Firefox, etc.)
107
+
108
+ ## 🤝 Contributing
109
+
110
+ Contributions are welcome! Please feel free to submit a Pull Request.
111
+
112
+ ## 📄 License
113
+
114
+ This project is licensed under the MIT License.
115
+
116
+ ## 🔗 Links
117
+
118
+ - [Documentation](https://dinilmithra.github.io/robo_appian/)
119
+ - [PyPI Package](https://pypi.org/project/robo-appian/)
120
+ - [GitHub Repository](https://github.com/dinilmithra/robo_appian)
121
+ ButtonUtils, ComponentUtils, DateUtils, DropdownUtils, InputUtils,
122
+ LabelUtils, LinkUtils, TableUtils, TabUtils
123
+ )
124
+
125
+ # Example: Set a Date Value
126
+ DateUtils.set_date_value("date_field_id", "2023-10-01")
127
+
128
+ # Example: Click a Button
129
+ ButtonUtils.click_button("submit_button_id")
130
+
131
+ # Example: Select a Dropdown Value
132
+ DropdownUtils.select_value("dropdown_id", "Option 1")
133
+
134
+ # Example: Enter Text in an Input Field
135
+ InputUtils.enter_text("input_field_id", "Sample Text")
136
+
137
+ # Example: Click a Link
138
+ LinkUtils.click_link("link_id")
139
+
140
+ # Example: Click a Tab
141
+ TabUtils.click_tab("tab_id")
142
+
143
+ # Example: Get a Table Cell Value
144
+ TableUtils.get_cell_value("table_id", 1, 2) # Row 1, Column 2
145
+
146
+ # Example: Get a Label Value
147
+ LabelUtils.get_label_value("label_id")
148
+
149
+ # Example: Get a Component Value
150
+ ComponentUtils.get_component_value("component_id")
151
+
152
+ # Example: Use the Component Driver
153
+ from robo_appian.utils.controllers.ComponentDriver import ComponentDriver
154
+ ComponentDriver.execute(wait, "Button", "Click", "Submit", None)
155
+
156
+ ## Dependencies
157
+
158
+ Python >= 3.8
159
+ Uses selenium
160
+
161
+ ## License
162
+
163
+ MIT License. See LICENSE.
@@ -0,0 +1,122 @@
1
+ # Robo Appian
2
+
3
+ **Automate your Appian code testing with Python. Boost quality, save time.**
4
+
5
+ [![PyPI version](https://badge.fury.io/py/robo-appian.svg)](https://badge.fury.io/py/robo-appian)
6
+ [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
7
+ [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue.svg)](https://dinilmithra.github.io/robo_appian/)
8
+
9
+ ## 🚀 Quick Start
10
+
11
+ ### Installation
12
+
13
+ ```bash
14
+ pip install robo-appian
15
+ ```
16
+
17
+ ### Basic Usage
18
+
19
+ ```python
20
+ from selenium import webdriver
21
+ from selenium.webdriver.support.ui import WebDriverWait
22
+ from robo_appian import ButtonUtils, InputUtils, TableUtils
23
+
24
+ # Setup your driver
25
+ driver = webdriver.Chrome()
26
+ wait = WebDriverWait(driver, 10)
27
+
28
+ # Interact with Appian components
29
+ ButtonUtils.click(wait, "Submit")
30
+ InputUtils.set_text(wait, "Username", "john.doe")
31
+ TableUtils.click_cell_link(wait, "Actions", 1, "Edit")
32
+ ```
33
+
34
+ ## 📚 Features
35
+
36
+ ### Components
37
+ - **ButtonUtils**: Find and click buttons
38
+ - **DateUtils**: Interact with date fields and date pickers
39
+ - **DropdownUtils**: Interact with dropdown/select components
40
+ - **InputUtils**: Interact with input fields and text areas
41
+ - **LabelUtils**: Find and interact with labels
42
+ - **LinkUtils**: Click links and navigate
43
+ - **TableUtils**: Interact with tables and grids
44
+ - **TabUtils**: Switch between tabs
45
+ - **ComponentUtils**: General component utilities
46
+
47
+ ### Controllers
48
+ - **ComponentDriver**: High-level interface for component interaction
49
+
50
+ ### Exceptions
51
+ - **MyCustomError**: Custom exceptions for better error handling
52
+
53
+ ## 📖 Documentation
54
+
55
+ Visit our [full documentation](https://dinilmithra.github.io/robo_appian/) for:
56
+ - Detailed API reference
57
+ - Complete examples and tutorials
58
+ - Installation guide
59
+ - Best practices
60
+
61
+ ## 🛠️ Requirements
62
+
63
+ - Python 3.12+
64
+ - Selenium WebDriver 4.34.0+
65
+ - Compatible web browser (Chrome, Firefox, etc.)
66
+
67
+ ## 🤝 Contributing
68
+
69
+ Contributions are welcome! Please feel free to submit a Pull Request.
70
+
71
+ ## 📄 License
72
+
73
+ This project is licensed under the MIT License.
74
+
75
+ ## 🔗 Links
76
+
77
+ - [Documentation](https://dinilmithra.github.io/robo_appian/)
78
+ - [PyPI Package](https://pypi.org/project/robo-appian/)
79
+ - [GitHub Repository](https://github.com/dinilmithra/robo_appian)
80
+ ButtonUtils, ComponentUtils, DateUtils, DropdownUtils, InputUtils,
81
+ LabelUtils, LinkUtils, TableUtils, TabUtils
82
+ )
83
+
84
+ # Example: Set a Date Value
85
+ DateUtils.set_date_value("date_field_id", "2023-10-01")
86
+
87
+ # Example: Click a Button
88
+ ButtonUtils.click_button("submit_button_id")
89
+
90
+ # Example: Select a Dropdown Value
91
+ DropdownUtils.select_value("dropdown_id", "Option 1")
92
+
93
+ # Example: Enter Text in an Input Field
94
+ InputUtils.enter_text("input_field_id", "Sample Text")
95
+
96
+ # Example: Click a Link
97
+ LinkUtils.click_link("link_id")
98
+
99
+ # Example: Click a Tab
100
+ TabUtils.click_tab("tab_id")
101
+
102
+ # Example: Get a Table Cell Value
103
+ TableUtils.get_cell_value("table_id", 1, 2) # Row 1, Column 2
104
+
105
+ # Example: Get a Label Value
106
+ LabelUtils.get_label_value("label_id")
107
+
108
+ # Example: Get a Component Value
109
+ ComponentUtils.get_component_value("component_id")
110
+
111
+ # Example: Use the Component Driver
112
+ from robo_appian.utils.controllers.ComponentDriver import ComponentDriver
113
+ ComponentDriver.execute(wait, "Button", "Click", "Submit", None)
114
+
115
+ ## Dependencies
116
+
117
+ Python >= 3.8
118
+ Uses selenium
119
+
120
+ ## License
121
+
122
+ MIT License. See LICENSE.
@@ -1,6 +1,7 @@
1
1
  [tool.poetry]
2
+ include = ["*.pyc"]
2
3
  name = "robo_appian"
3
- version = "0.0.2"
4
+ version = "0.0.4"
4
5
  description = "Automate your Appian code testing with Python. Boost quality, save time."
5
6
  authors = ["Dinil Mithra <dinilmithra@mailme@gmail.com>"]
6
7
  readme = "README.md"
@@ -16,6 +17,12 @@ python = "^3.12"
16
17
  requests = "^2.25.1"
17
18
  numpy = "*"
18
19
  selenium = ">=4.34.0"
20
+ pyarmor = ">=8.0.0"
21
+
22
+ [tool.poetry.group.dev.dependencies]
23
+ mkdocs = "^1.5.0"
24
+ mkdocs-material = "^9.0.0"
25
+ mkdocstrings = {extras = ["python"], version = "^0.24.0"}
19
26
 
20
27
  [build-system]
21
28
  requires = ["poetry-core"]
@@ -8,4 +8,16 @@ from robo_appian.utils.components.LinkUtils import LinkUtils
8
8
  from robo_appian.utils.components.TableUtils import TableUtils
9
9
  from robo_appian.utils.components.TabUtils import TabUtils
10
10
 
11
- __version__ = "0.1.0"
11
+ __version__ = "0.0.2"
12
+
13
+ __all__ = [
14
+ "ButtonUtils",
15
+ "ComponentUtils",
16
+ "DateUtils",
17
+ "DropdownUtils",
18
+ "InputUtils",
19
+ "LabelUtils",
20
+ "LinkUtils",
21
+ "TableUtils",
22
+ "TabUtils"
23
+ ]
@@ -0,0 +1 @@
1
+ # Bytecode package
@@ -0,0 +1 @@
1
+ # Bytecode package
@@ -0,0 +1 @@
1
+ # Bytecode package
@@ -0,0 +1 @@
1
+ # Bytecode package
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: robo_appian
3
+ Version: 0.0.4
4
+ Summary: Selenium-based automation utilities for Appian applications
5
+ Home-page: https://github.com/yourusername/robo_appian
6
+ Author: Your Name
7
+ Author-email: your.email@example.com
8
+ Project-URL: Bug Reports, https://github.com/yourusername/robo_appian/issues
9
+ Project-URL: Source, https://github.com/yourusername/robo_appian
10
+ Project-URL: Documentation, https://robo-appian.readthedocs.io/
11
+ Keywords: selenium,automation,testing,appian,ui
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Topic :: Software Development :: Testing
15
+ Classifier: Topic :: Software Development :: Quality Assurance
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: selenium>=4.34.0
27
+ Requires-Dist: requests>=2.25.0
28
+ Requires-Dist: numpy>=1.21.0
29
+ Dynamic: author
30
+ Dynamic: author-email
31
+ Dynamic: classifier
32
+ Dynamic: description
33
+ Dynamic: description-content-type
34
+ Dynamic: home-page
35
+ Dynamic: keywords
36
+ Dynamic: license-file
37
+ Dynamic: project-url
38
+ Dynamic: requires-dist
39
+ Dynamic: requires-python
40
+ Dynamic: summary
41
+
42
+ # Robo Appian
43
+
44
+ **Automate your Appian code testing with Python. Boost quality, save time.**
45
+
46
+ [![PyPI version](https://badge.fury.io/py/robo-appian.svg)](https://badge.fury.io/py/robo-appian)
47
+ [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
48
+ [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue.svg)](https://dinilmithra.github.io/robo_appian/)
49
+
50
+ ## 🚀 Quick Start
51
+
52
+ ### Installation
53
+
54
+ ```bash
55
+ pip install robo-appian
56
+ ```
57
+
58
+ ### Basic Usage
59
+
60
+ ```python
61
+ from selenium import webdriver
62
+ from selenium.webdriver.support.ui import WebDriverWait
63
+ from robo_appian import ButtonUtils, InputUtils, TableUtils
64
+
65
+ # Setup your driver
66
+ driver = webdriver.Chrome()
67
+ wait = WebDriverWait(driver, 10)
68
+
69
+ # Interact with Appian components
70
+ ButtonUtils.click(wait, "Submit")
71
+ InputUtils.set_text(wait, "Username", "john.doe")
72
+ TableUtils.click_cell_link(wait, "Actions", 1, "Edit")
73
+ ```
74
+
75
+ ## 📚 Features
76
+
77
+ ### Components
78
+ - **ButtonUtils**: Find and click buttons
79
+ - **DateUtils**: Interact with date fields and date pickers
80
+ - **DropdownUtils**: Interact with dropdown/select components
81
+ - **InputUtils**: Interact with input fields and text areas
82
+ - **LabelUtils**: Find and interact with labels
83
+ - **LinkUtils**: Click links and navigate
84
+ - **TableUtils**: Interact with tables and grids
85
+ - **TabUtils**: Switch between tabs
86
+ - **ComponentUtils**: General component utilities
87
+
88
+ ### Controllers
89
+ - **ComponentDriver**: High-level interface for component interaction
90
+
91
+ ### Exceptions
92
+ - **MyCustomError**: Custom exceptions for better error handling
93
+
94
+ ## 📖 Documentation
95
+
96
+ Visit our [full documentation](https://dinilmithra.github.io/robo_appian/) for:
97
+ - Detailed API reference
98
+ - Complete examples and tutorials
99
+ - Installation guide
100
+ - Best practices
101
+
102
+ ## 🛠️ Requirements
103
+
104
+ - Python 3.12+
105
+ - Selenium WebDriver 4.34.0+
106
+ - Compatible web browser (Chrome, Firefox, etc.)
107
+
108
+ ## 🤝 Contributing
109
+
110
+ Contributions are welcome! Please feel free to submit a Pull Request.
111
+
112
+ ## 📄 License
113
+
114
+ This project is licensed under the MIT License.
115
+
116
+ ## 🔗 Links
117
+
118
+ - [Documentation](https://dinilmithra.github.io/robo_appian/)
119
+ - [PyPI Package](https://pypi.org/project/robo-appian/)
120
+ - [GitHub Repository](https://github.com/dinilmithra/robo_appian)
121
+ ButtonUtils, ComponentUtils, DateUtils, DropdownUtils, InputUtils,
122
+ LabelUtils, LinkUtils, TableUtils, TabUtils
123
+ )
124
+
125
+ # Example: Set a Date Value
126
+ DateUtils.set_date_value("date_field_id", "2023-10-01")
127
+
128
+ # Example: Click a Button
129
+ ButtonUtils.click_button("submit_button_id")
130
+
131
+ # Example: Select a Dropdown Value
132
+ DropdownUtils.select_value("dropdown_id", "Option 1")
133
+
134
+ # Example: Enter Text in an Input Field
135
+ InputUtils.enter_text("input_field_id", "Sample Text")
136
+
137
+ # Example: Click a Link
138
+ LinkUtils.click_link("link_id")
139
+
140
+ # Example: Click a Tab
141
+ TabUtils.click_tab("tab_id")
142
+
143
+ # Example: Get a Table Cell Value
144
+ TableUtils.get_cell_value("table_id", 1, 2) # Row 1, Column 2
145
+
146
+ # Example: Get a Label Value
147
+ LabelUtils.get_label_value("label_id")
148
+
149
+ # Example: Get a Component Value
150
+ ComponentUtils.get_component_value("component_id")
151
+
152
+ # Example: Use the Component Driver
153
+ from robo_appian.utils.controllers.ComponentDriver import ComponentDriver
154
+ ComponentDriver.execute(wait, "Button", "Click", "Submit", None)
155
+
156
+ ## Dependencies
157
+
158
+ Python >= 3.8
159
+ Uses selenium
160
+
161
+ ## License
162
+
163
+ MIT License. See LICENSE.
@@ -0,0 +1,31 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ pyproject.toml
5
+ setup.py
6
+ robo_appian/__init__.py
7
+ robo_appian.egg-info/PKG-INFO
8
+ robo_appian.egg-info/SOURCES.txt
9
+ robo_appian.egg-info/dependency_links.txt
10
+ robo_appian.egg-info/requires.txt
11
+ robo_appian.egg-info/top_level.txt
12
+ robo_appian/utils/__init__.py
13
+ robo_appian/utils/components/__init__.py
14
+ robo_appian/utils/controllers/__init__.py
15
+ robo_appian/utils/exceptions/__init__.py
16
+ robo_appian_source_backup/__init__.py
17
+ robo_appian_source_backup/utils/__init__.py
18
+ robo_appian_source_backup/utils/components/ButtonUtils.py
19
+ robo_appian_source_backup/utils/components/ComponentUtils.py
20
+ robo_appian_source_backup/utils/components/DateUtils.py
21
+ robo_appian_source_backup/utils/components/DropdownUtils.py
22
+ robo_appian_source_backup/utils/components/InputUtils.py
23
+ robo_appian_source_backup/utils/components/LabelUtils.py
24
+ robo_appian_source_backup/utils/components/LinkUtils.py
25
+ robo_appian_source_backup/utils/components/TabUtils.py
26
+ robo_appian_source_backup/utils/components/TableUtils.py
27
+ robo_appian_source_backup/utils/components/__init__.py
28
+ robo_appian_source_backup/utils/controllers/ComponentDriver.py
29
+ robo_appian_source_backup/utils/controllers/__init__.py
30
+ robo_appian_source_backup/utils/exceptions/MyCustomError.py
31
+ robo_appian_source_backup/utils/exceptions/__init__.py
@@ -0,0 +1,3 @@
1
+ selenium>=4.34.0
2
+ requests>=2.25.0
3
+ numpy>=1.21.0
@@ -0,0 +1,2 @@
1
+ robo_appian
2
+ robo_appian_source_backup
@@ -0,0 +1,23 @@
1
+ from robo_appian.utils.components.ButtonUtils import ButtonUtils
2
+ from robo_appian.utils.components.ComponentUtils import ComponentUtils
3
+ from robo_appian.utils.components.DateUtils import DateUtils
4
+ from robo_appian.utils.components.DropdownUtils import DropdownUtils
5
+ from robo_appian.utils.components.InputUtils import InputUtils
6
+ from robo_appian.utils.components.LabelUtils import LabelUtils
7
+ from robo_appian.utils.components.LinkUtils import LinkUtils
8
+ from robo_appian.utils.components.TableUtils import TableUtils
9
+ from robo_appian.utils.components.TabUtils import TabUtils
10
+
11
+ __version__ = "0.0.2"
12
+
13
+ __all__ = [
14
+ "ButtonUtils",
15
+ "ComponentUtils",
16
+ "DateUtils",
17
+ "DropdownUtils",
18
+ "InputUtils",
19
+ "LabelUtils",
20
+ "LinkUtils",
21
+ "TableUtils",
22
+ "TabUtils"
23
+ ]
@@ -45,15 +45,15 @@ class DropdownUtils:
45
45
  # It ensures that the dropdown is clickable and ready for interaction.
46
46
  # The dropdown component is expected to have a structure where the label is within a span inside a div.
47
47
 
48
- xpath = f'.//div[./div/span[normalize-space(text())="{dropdown_label}"]]/div/div/div/div[@role="combobox" and @tabindex="0"]'
48
+ # xpath = f'.//div[./div/span[normalize-space(text())="{dropdown_label}"]]/div/div/div/div[@role="combobox" and @tabindex="0"]'
49
+ # V0.0.4
50
+ xpath = f'.//div[./div/span[contains(normalize-space(text()), "{dropdown_label}")]]/div/div/div/div[@role="combobox" and @tabindex="0"][0]'
49
51
  component = wait.until(EC.element_to_be_clickable((By.XPATH, xpath)))
50
52
  return component
51
53
 
52
54
  @staticmethod
53
55
  def selectValueUsingComponent(
54
- wait: WebDriverWait,
55
- combobox: WebElement,
56
- value: str
56
+ wait: WebDriverWait, combobox: WebElement, value: str
57
57
  ) -> None:
58
58
  """
59
59
  Selects a value from a dropdown component using the provided combobox element.
@@ -74,7 +74,7 @@ class DropdownUtils:
74
74
  raise ValueError(f"Dropdown component object is not valid.")
75
75
 
76
76
  component: WebElement = combobox.find_element(By.XPATH, "./div/div") # type: ignore[reportUnknownMemberType]
77
- aria_controls = component.get_attribute("aria-controls") # type: ignore[reportUnknownMemberType]
77
+ aria_controls = component.get_attribute("aria-controls") # type: ignore[reportUnknownMemberType]
78
78
  component.click()
79
79
 
80
80
  xpath = f'.//div/ul[@id="{aria_controls}"]/li[./div[normalize-space(text())="{value}"]]'
@@ -100,7 +100,7 @@ class DropdownUtils:
100
100
  # and then clicks on the dropdown to display the options.
101
101
 
102
102
  combobox = DropdownUtils.findDropdownEnabled(wait, label)
103
- aria_controls = combobox.get_attribute("aria-controls") # type: ignore[reportUnknownMemberType]
103
+ aria_controls = combobox.get_attribute("aria-controls") # type: ignore[reportUnknownMemberType]
104
104
  combobox.click()
105
105
 
106
106
  xpath = f'.//div/ul[@id="{aria_controls}"]/li[./div[normalize-space(text())="{value}"]]'
@@ -126,8 +126,8 @@ class DropdownUtils:
126
126
  # and the component ID, clicks on the dropdown to display the search input,
127
127
 
128
128
  component = DropdownUtils.findDropdownEnabled(wait, dropdown_label)
129
- component_id = component.get_attribute("aria-labelledby") # type: ignore[reportUnknownMemberType]
130
- aria_controls = component.get_attribute("aria-controls") # type: ignore[reportUnknownMemberType]
129
+ component_id = component.get_attribute("aria-labelledby") # type: ignore[reportUnknownMemberType]
130
+ aria_controls = component.get_attribute("aria-controls") # type: ignore[reportUnknownMemberType]
131
131
  component.click()
132
132
 
133
133
  input_component_id = str(component_id) + "_searchInput"
@@ -37,7 +37,9 @@ class InputUtils:
37
37
  # This method locates an input component that contains a label with the specified text.
38
38
  # It then retrieves the component's ID and uses it to find the actual input element.
39
39
 
40
- xpath = f".//div/label[text()='{label}']"
40
+ # xpath = f".//div/label[text()='{label}']"
41
+ # V0.0.4
42
+ xpath = f".//div/label[contains(normalize-space(text()), '{label}')]"
41
43
  component: WebElement = wait.until(
42
44
  EC.element_to_be_clickable((By.XPATH, xpath))
43
45
  )
@@ -175,9 +177,11 @@ class InputUtils:
175
177
  # and the component ID, clicks on the input to display the search input,
176
178
  # and sets the specified value in the search input field.
177
179
 
178
- xpath = (
179
- f".//div[./div/span[text()='{label}']]/div/div/div/input[@role='combobox']"
180
- )
180
+ # xpath = (
181
+ # f".//div[./div/span[text()='{label}']]/div/div/div/input[@role='combobox']"
182
+ # )
183
+ # V0.0.4
184
+ xpath = f".//div[./div/span[contains(normalize-space(text())='{label}']]/div/div/div/input[@role='combobox']"
181
185
  search_input_component = wait.until(
182
186
  EC.element_to_be_clickable((By.XPATH, xpath))
183
187
  )
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,66 @@
1
+ import os
2
+ from setuptools import setup, find_packages
3
+
4
+ # Read README
5
+ with open("README.md", "r", encoding="utf-8") as fh:
6
+ long_description = fh.read()
7
+
8
+ # Find all Python bytecode files
9
+ def find_bytecode_files():
10
+ """Find all .pyc files in the package"""
11
+ bytecode_files = []
12
+ for root, dirs, files in os.walk("robo_appian"):
13
+ for file in files:
14
+ if file.endswith('.pyc'):
15
+ bytecode_files.append(os.path.join(root, file))
16
+ return bytecode_files
17
+
18
+ # Custom data files to include bytecode
19
+ bytecode_files = find_bytecode_files()
20
+ package_data = {}
21
+
22
+ # Group bytecode files by package
23
+ for file_path in bytecode_files:
24
+ package_name = os.path.dirname(file_path).replace(os.sep, '.')
25
+ if package_name not in package_data:
26
+ package_data[package_name] = []
27
+ package_data[package_name].append(os.path.basename(file_path))
28
+
29
+ setup(
30
+ name="robo_appian",
31
+ version="0.0.4",
32
+ author="Your Name",
33
+ author_email="your.email@example.com",
34
+ description="Selenium-based automation utilities for Appian applications",
35
+ long_description=long_description,
36
+ long_description_content_type="text/markdown",
37
+ url="https://github.com/yourusername/robo_appian",
38
+ packages=find_packages(),
39
+ package_data=package_data,
40
+ include_package_data=True,
41
+ classifiers=[
42
+ "Development Status :: 4 - Beta",
43
+ "Intended Audience :: Developers",
44
+ "Topic :: Software Development :: Testing",
45
+ "Topic :: Software Development :: Quality Assurance",
46
+ "License :: OSI Approved :: MIT License",
47
+ "Programming Language :: Python :: 3",
48
+ "Programming Language :: Python :: 3.8",
49
+ "Programming Language :: Python :: 3.9",
50
+ "Programming Language :: Python :: 3.10",
51
+ "Programming Language :: Python :: 3.11",
52
+ "Programming Language :: Python :: 3.12",
53
+ ],
54
+ python_requires=">=3.8",
55
+ install_requires=[
56
+ "selenium>=4.34.0",
57
+ "requests>=2.25.0",
58
+ "numpy>=1.21.0",
59
+ ],
60
+ keywords="selenium, automation, testing, appian, ui",
61
+ project_urls={
62
+ "Bug Reports": "https://github.com/yourusername/robo_appian/issues",
63
+ "Source": "https://github.com/yourusername/robo_appian",
64
+ "Documentation": "https://robo-appian.readthedocs.io/",
65
+ },
66
+ )
@@ -1,91 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: robo_appian
3
- Version: 0.0.2
4
- Summary: Automate your Appian code testing with Python. Boost quality, save time.
5
- Author: Dinil Mithra
6
- Author-email: dinilmithra@mailme@gmail.com
7
- Requires-Python: >=3.12,<4.0
8
- Classifier: Operating System :: OS Independent
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: Programming Language :: Python :: 3.12
11
- Classifier: Programming Language :: Python :: 3.13
12
- Requires-Dist: numpy
13
- Requires-Dist: requests (>=2.25.1,<3.0.0)
14
- Requires-Dist: selenium (>=4.34.0)
15
- Project-URL: Homepage, https://github.com/dinilmithra/robo_appian
16
- Project-URL: Repository, https://github.com/dinilmithra/robo_appian.git
17
- Description-Content-Type: text/markdown
18
-
19
- # Robo Appian
20
-
21
- Python library for automating Appian web UI test cases!
22
-
23
- # Modules
24
- ## Components
25
-
26
- ButtonUtils: Find and click buttons.
27
- DateUtils: Interact with date fields.
28
- DropdownUtils: Interact with dropdowns.
29
- InputUtils: Interact with input fields.
30
- LabelUtils: Find labels.
31
- LinkUtils: Click links.
32
- TableUtils: Interact with tables.
33
- TabUtils: Interact with tabs.
34
- ComponentUtils: General utilities for components (input, dropdown, tab, etc).
35
-
36
- ## Controllers
37
-
38
- ComponentDriver: High-level interface to execute actions on components.
39
-
40
- ## Exceptions
41
-
42
- MyCustomError: Custom exception for specific error conditions.
43
-
44
- # Usage
45
-
46
- Import the utilities in your test scripts:
47
-
48
- from robo_appian import (
49
- ButtonUtils, ComponentUtils, DateUtils, DropdownUtils, InputUtils,
50
- LabelUtils, LinkUtils, TableUtils, TabUtils
51
- )
52
-
53
- # Example: Set a Date Value
54
- DateUtils.set_date_value("date_field_id", "2023-10-01")
55
-
56
- # Example: Click a Button
57
- ButtonUtils.click_button("submit_button_id")
58
-
59
- # Example: Select a Dropdown Value
60
- DropdownUtils.select_value("dropdown_id", "Option 1")
61
-
62
- # Example: Enter Text in an Input Field
63
- InputUtils.enter_text("input_field_id", "Sample Text")
64
-
65
- # Example: Click a Link
66
- LinkUtils.click_link("link_id")
67
-
68
- # Example: Click a Tab
69
- TabUtils.click_tab("tab_id")
70
-
71
- # Example: Get a Table Cell Value
72
- TableUtils.get_cell_value("table_id", 1, 2) # Row 1, Column 2
73
-
74
- # Example: Get a Label Value
75
- LabelUtils.get_label_value("label_id")
76
-
77
- # Example: Get a Component Value
78
- ComponentUtils.get_component_value("component_id")
79
-
80
- # Example: Use the Component Driver
81
- from robo_appian.utils.controllers.ComponentDriver import ComponentDriver
82
- ComponentDriver.execute(wait, "Button", "Click", "Submit", None)
83
-
84
- ## Dependencies
85
-
86
- Python >= 3.8
87
- Uses selenium
88
-
89
- ## License
90
-
91
- MIT License. See LICENSE.
@@ -1,73 +0,0 @@
1
- # Robo Appian
2
-
3
- Python library for automating Appian web UI test cases!
4
-
5
- # Modules
6
- ## Components
7
-
8
- ButtonUtils: Find and click buttons.
9
- DateUtils: Interact with date fields.
10
- DropdownUtils: Interact with dropdowns.
11
- InputUtils: Interact with input fields.
12
- LabelUtils: Find labels.
13
- LinkUtils: Click links.
14
- TableUtils: Interact with tables.
15
- TabUtils: Interact with tabs.
16
- ComponentUtils: General utilities for components (input, dropdown, tab, etc).
17
-
18
- ## Controllers
19
-
20
- ComponentDriver: High-level interface to execute actions on components.
21
-
22
- ## Exceptions
23
-
24
- MyCustomError: Custom exception for specific error conditions.
25
-
26
- # Usage
27
-
28
- Import the utilities in your test scripts:
29
-
30
- from robo_appian import (
31
- ButtonUtils, ComponentUtils, DateUtils, DropdownUtils, InputUtils,
32
- LabelUtils, LinkUtils, TableUtils, TabUtils
33
- )
34
-
35
- # Example: Set a Date Value
36
- DateUtils.set_date_value("date_field_id", "2023-10-01")
37
-
38
- # Example: Click a Button
39
- ButtonUtils.click_button("submit_button_id")
40
-
41
- # Example: Select a Dropdown Value
42
- DropdownUtils.select_value("dropdown_id", "Option 1")
43
-
44
- # Example: Enter Text in an Input Field
45
- InputUtils.enter_text("input_field_id", "Sample Text")
46
-
47
- # Example: Click a Link
48
- LinkUtils.click_link("link_id")
49
-
50
- # Example: Click a Tab
51
- TabUtils.click_tab("tab_id")
52
-
53
- # Example: Get a Table Cell Value
54
- TableUtils.get_cell_value("table_id", 1, 2) # Row 1, Column 2
55
-
56
- # Example: Get a Label Value
57
- LabelUtils.get_label_value("label_id")
58
-
59
- # Example: Get a Component Value
60
- ComponentUtils.get_component_value("component_id")
61
-
62
- # Example: Use the Component Driver
63
- from robo_appian.utils.controllers.ComponentDriver import ComponentDriver
64
- ComponentDriver.execute(wait, "Button", "Click", "Submit", None)
65
-
66
- ## Dependencies
67
-
68
- Python >= 3.8
69
- Uses selenium
70
-
71
- ## License
72
-
73
- MIT License. See LICENSE.
File without changes