calabash-android 0.5.11 → 0.5.12.pre1
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 687749f90a3d6925e20572e3c8c0f8a5f0da70c7
|
4
|
+
data.tar.gz: 7dc8452b1af1937e782c8efc79648adfe16712af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 701ad3949e4f2d1349c34f02feb8ee7214bc0dae885b73309dff1b8642c44317a2ac1bd699db62556baa9b170fa339a4fe5f10d31fd7b2bf9a1148ad95bead84
|
7
|
+
data.tar.gz: 16130bdfef459dc8a6e5e0b2bc3bbe9cf8782655a6db9f71588f7c04db9c712ee1d807c1c6995a2b3565099a5dd7aa0186ac895d949a3a6fe50cad0ea88037b8
|
Binary file
|
@@ -24,9 +24,14 @@
|
|
24
24
|
if (isHostMethod(object,'getBoundingClientRect'))
|
25
25
|
{
|
26
26
|
boundingBox = object.getBoundingClientRect();
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
var rect = {};
|
28
|
+
rect.width = boundingBox.width;
|
29
|
+
rect.height = boundingBox.height;
|
30
|
+
rect.left = boundingBox.left;
|
31
|
+
rect.top = boundingBox.top;
|
32
|
+
res.rect = rect;
|
33
|
+
res.rect.center_x = rect.left + Math.floor(rect.width/2);
|
34
|
+
res.rect.center_y = rect.top + Math.floor(rect.height/2);
|
30
35
|
}
|
31
36
|
res.nodeType = NODE_TYPES[object.nodeType] || res.nodeType + ' (Unexpected)';
|
32
37
|
res.nodeName = object.nodeName;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calabash-android
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.12.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Maturana Larsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -250,7 +250,6 @@ files:
|
|
250
250
|
- test-server/AndroidManifest.xml
|
251
251
|
- test-server/build.xml
|
252
252
|
- test-server/calabash-js/src/calabash.js
|
253
|
-
- test-server/calabash-js/src/set_text.js
|
254
253
|
- lib/calabash-android/lib/TestServer.apk
|
255
254
|
homepage: http://github.com/calabash
|
256
255
|
licenses: []
|
@@ -266,9 +265,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
266
265
|
version: '0'
|
267
266
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
267
|
requirements:
|
269
|
-
- - '
|
268
|
+
- - '>'
|
270
269
|
- !ruby/object:Gem::Version
|
271
|
-
version:
|
270
|
+
version: 1.3.1
|
272
271
|
requirements: []
|
273
272
|
rubyforge_project:
|
274
273
|
rubygems_version: 2.0.2
|
@@ -1,139 +0,0 @@
|
|
1
|
-
(function () {
|
2
|
-
function simulateKeyEvent(elem, character) {
|
3
|
-
var ch = character.charCodeAt(0);
|
4
|
-
|
5
|
-
var evt;
|
6
|
-
evt = document.createEvent('KeyboardEvent');
|
7
|
-
evt.initKeyboardEvent('keydown', true, true, window, 0, 0, 0, 0, 0, ch);
|
8
|
-
elem.dispatchEvent(evt);
|
9
|
-
|
10
|
-
evt = document.createEvent('KeyboardEvent');
|
11
|
-
evt.initKeyboardEvent('keyup', true, true, window, 0, 0, 0, 0, 0, ch);
|
12
|
-
elem.dispatchEvent(evt);
|
13
|
-
evt = document.createEvent('KeyboardEvent');
|
14
|
-
evt.initKeyboardEvent('keypress', true, true, window, 0, 0, 0, 0, 0, ch);
|
15
|
-
elem.dispatchEvent(evt);
|
16
|
-
}
|
17
|
-
|
18
|
-
|
19
|
-
function enterTextIntoInputField(elem, text) {
|
20
|
-
elem.value = "";
|
21
|
-
for (var i = 0; i < text.length; i++) {
|
22
|
-
var ch = text.charAt(i);
|
23
|
-
elem.value += ch;
|
24
|
-
simulateKeyEvent(elem, ch);
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
|
29
|
-
function fireHTMLEvent(elem, eventName) {
|
30
|
-
var evt = document.createEvent("HTMLEvents");
|
31
|
-
evt.initEvent(eventName, true, true );
|
32
|
-
return !elem.dispatchEvent(evt);
|
33
|
-
}
|
34
|
-
|
35
|
-
function selectInputField(elem) {
|
36
|
-
elem.click();
|
37
|
-
elem.focus();
|
38
|
-
}
|
39
|
-
|
40
|
-
|
41
|
-
function deselectInputField(elem) {
|
42
|
-
fireHTMLEvent(elem, 'change');
|
43
|
-
fireHTMLEvent(elem, 'blur');
|
44
|
-
}
|
45
|
-
|
46
|
-
|
47
|
-
/** David Mark's isHostMethod function,
|
48
|
-
* http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting
|
49
|
-
* Modified to use strict equality
|
50
|
-
*/
|
51
|
-
function isHostMethod (object, property)
|
52
|
-
{
|
53
|
-
var t = typeof object[property];
|
54
|
-
return t==='function' ||
|
55
|
-
(!!(t==='object' && object[property])) ||
|
56
|
-
t==='unknown';
|
57
|
-
}
|
58
|
-
//http://www.w3.org/TR/DOM-Level-2-Core/core.html
|
59
|
-
var NODE_TYPES = {
|
60
|
-
/*ELEMENT_NODE : */ 1 : 'ELEMENT_NODE',
|
61
|
-
/*ATTRIBUTE_NODE : */ 2: 'ATTRIBUTE_NODE',
|
62
|
-
/*TEXT_NODE : */ 3 : 'TEXT_NODE',
|
63
|
-
/*DOCUMENT_NODE : */ 9 : 'DOCUMENT_NODE'
|
64
|
-
};
|
65
|
-
|
66
|
-
function toJSON(object)
|
67
|
-
{
|
68
|
-
var res, i, N;
|
69
|
-
if (typeof object==='undefined')
|
70
|
-
{
|
71
|
-
throw {message:'Calling toJSON with undefined'};
|
72
|
-
}
|
73
|
-
else if (object instanceof Node)//TODO: support for frames!
|
74
|
-
{
|
75
|
-
res = {};
|
76
|
-
if (isHostMethod(object,'getBoundingClientRect'))
|
77
|
-
{
|
78
|
-
res['rect'] = object.getBoundingClientRect();
|
79
|
-
}
|
80
|
-
res.nodeType = NODE_TYPES[object.nodeType] || res.nodeType + ' (Unexpected)';
|
81
|
-
res.nodeName = object.nodeName;
|
82
|
-
res.id = object.id || '';
|
83
|
-
res['class'] = object.className || '';
|
84
|
-
if (object.hasOwnProperty('value')) {
|
85
|
-
res.value = object.value;
|
86
|
-
}
|
87
|
-
res.html = object.outerHTML || '';
|
88
|
-
res.nodeValue = object.nodeValue;
|
89
|
-
}
|
90
|
-
else if (object instanceof NodeList || //TODO: support for frames!
|
91
|
-
(typeof object=='object' && object &&
|
92
|
-
typeof object.length === 'number' &&
|
93
|
-
object.length > 0 //array like
|
94
|
-
&& typeof object[0] !== 'undefined'))
|
95
|
-
{
|
96
|
-
res = [];
|
97
|
-
for (i=0,N=object.length;i<N;i++)
|
98
|
-
{
|
99
|
-
res[i] = toJSON(object[i]);
|
100
|
-
}
|
101
|
-
}
|
102
|
-
else
|
103
|
-
{
|
104
|
-
res = object;
|
105
|
-
}
|
106
|
-
return res;
|
107
|
-
}
|
108
|
-
|
109
|
-
///TODO: no support for now frames
|
110
|
-
//idea would be map XPath across window.frames
|
111
|
-
//must take care of visibility questions
|
112
|
-
|
113
|
-
try
|
114
|
-
{
|
115
|
-
var exp = JSON.parse('%@')/* dynamic */,
|
116
|
-
el,
|
117
|
-
text = '%@',
|
118
|
-
i,N;
|
119
|
-
|
120
|
-
el=document.elementFromPoint(exp.rect.left + exp.rect.width / 2, exp.rect.top + exp.rect.height / 2);
|
121
|
-
if(exp.id){
|
122
|
-
el = document.getElementById(exp.id);
|
123
|
-
}
|
124
|
-
if (/input/i.test(el.tagName))
|
125
|
-
{
|
126
|
-
selectInputField(el);
|
127
|
-
enterTextIntoInputField(el, text);
|
128
|
-
}
|
129
|
-
else
|
130
|
-
{
|
131
|
-
|
132
|
-
}
|
133
|
-
}
|
134
|
-
catch (e)
|
135
|
-
{
|
136
|
-
return JSON.stringify({error:'Exception while running query: '+exp, details:e.toString()})
|
137
|
-
}
|
138
|
-
return JSON.stringify(toJSON(el));
|
139
|
-
})();
|