Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
R
RatelExtension
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ratel
RatelExtension
Commits
bf41ac2d
Commit
bf41ac2d
authored
Feb 12, 2020
by
Administrator
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加view是否显示的attribute,修复contains函数可能的NPE,增加轴函数precedingSeblingOne,修复滑动控制逻辑有误的问题
parent
14f13766
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
106 additions
and
11 deletions
+106
-11
SuperAppium.java
...m/virjar/ratel/api/extension/superappium/SuperAppium.java
+1
-0
SwipeUtils.java
...om/virjar/ratel/api/extension/superappium/SwipeUtils.java
+42
-6
ViewImage.java
...com/virjar/ratel/api/extension/superappium/ViewImage.java
+6
-4
ValueGetters.java
.../ratel/api/extension/superappium/xmodel/ValueGetters.java
+2
-0
VisibleValueGetter.java
...extension/superappium/xmodel/view/VisibleValueGetter.java
+26
-0
FunctionEnv.java
...api/extension/superappium/xpath/function/FunctionEnv.java
+2
-0
PrecedingSiblingOneFunction.java
...pium/xpath/function/axis/PrecedingSiblingOneFunction.java
+22
-0
ContainsFunction.java
...n/superappium/xpath/function/filter/ContainsFunction.java
+5
-1
No files found.
src/main/java/com/virjar/ratel/api/extension/superappium/SuperAppium.java
View file @
bf41ac2d
...
...
@@ -17,6 +17,7 @@ public class SuperAppium {
public
static
final
String
selected
=
"selected"
;
public
static
final
String
index
=
"index"
;
public
static
final
String
hash
=
"hash"
;
public
static
final
String
visible
=
"visible"
;
public
static
String
TAG
=
"SuperAppium"
;
}
src/main/java/com/virjar/ratel/api/extension/superappium/SwipeUtils.java
View file @
bf41ac2d
...
...
@@ -4,10 +4,13 @@ import android.os.Handler;
import
android.os.Looper
;
import
android.os.Message
;
import
android.os.SystemClock
;
import
android.util.Log
;
import
android.view.MotionEvent
;
import
java.lang.ref.WeakReference
;
import
static
android
.
view
.
MotionEvent
.
TOOL_TYPE_FINGER
;
/**
* <pre>
* author : xiaweizi
...
...
@@ -25,7 +28,7 @@ public class SwipeUtils {
public
static
final
int
NORMAL
=
100
;
public
static
final
int
LOW
=
1000
;
private
static
final
long
DEFAULT_DURATION
=
1
5
00
;
private
static
final
long
DEFAULT_DURATION
=
1
0
00
;
/**
* 模拟手势滑动
...
...
@@ -92,8 +95,14 @@ public class SwipeUtils {
dealSimulateScroll
(
activity
,
startX
,
startY
,
endX
,
endY
,
duration
,
period
);
}
private
static
boolean
isScrolling
=
false
;
private
static
void
dealSimulateScroll
(
ViewImage
object
,
float
startX
,
float
startY
,
float
endX
,
float
endY
,
long
duration
,
int
period
)
{
long
downTime
=
SystemClock
.
uptimeMillis
();
if
(
isScrolling
)
{
Log
.
i
(
SuperAppium
.
TAG
,
"score task is running.."
);
return
;
}
isScrolling
=
true
;
Handler
handler
=
new
ViewHandler
(
object
);
//重置相对偏移
...
...
@@ -106,12 +115,32 @@ public class SwipeUtils {
startY
-=
loca
[
1
];
endY
-=
loca
[
1
];
object
.
dispatchInputEvent
(
MotionEvent
.
obtain
(
downTime
,
downTime
,
MotionEvent
.
ACTION_DOWN
,
startX
,
startY
,
0
));
object
.
dispatchPointerEvent
(
genFingerEvent
(
MotionEvent
.
ACTION_DOWN
,
startX
,
startY
));
GestureBean
bean
=
new
GestureBean
(
startX
,
startY
,
endX
,
endY
,
duration
,
period
);
Message
.
obtain
(
handler
,
1
,
bean
).
sendToTarget
();
}
private
static
MotionEvent
genFingerEvent
(
int
action
,
float
x
,
float
y
)
{
long
downTime
=
SystemClock
.
uptimeMillis
();
long
eventTime
=
SystemClock
.
uptimeMillis
();
MotionEvent
.
PointerCoords
pointerCoords
=
new
MotionEvent
.
PointerCoords
();
pointerCoords
.
x
=
x
;
pointerCoords
.
y
=
y
;
MotionEvent
.
PointerProperties
pointerProperties
=
new
MotionEvent
.
PointerProperties
();
pointerProperties
.
id
=
0
;
pointerProperties
.
toolType
=
TOOL_TYPE_FINGER
;
MotionEvent
.
PointerProperties
[]
pointerPropertiesArray
=
new
MotionEvent
.
PointerProperties
[]{
pointerProperties
};
MotionEvent
.
PointerCoords
[]
pointerCoordsArray
=
new
MotionEvent
.
PointerCoords
[]{
pointerCoords
};
return
MotionEvent
.
obtain
(
downTime
,
eventTime
,
action
,
1
,
pointerPropertiesArray
,
pointerCoordsArray
,
0
,
0
,
0
,
0
,
4
,
0
,
0x1002
,
0
);
}
static
class
ViewHandler
extends
Handler
{
WeakReference
<
ViewImage
>
mView
;
...
...
@@ -126,13 +155,20 @@ public class SwipeUtils {
if
(
theView
==
null
)
{
return
;
}
long
downTime
=
SystemClock
.
uptimeMillis
();
GestureBean
bean
=
(
GestureBean
)
msg
.
obj
;
long
count
=
bean
.
count
;
if
(
count
>=
bean
.
totalCount
)
{
theView
.
dispatchInputEvent
(
MotionEvent
.
obtain
(
downTime
,
downTime
,
MotionEvent
.
ACTION_UP
,
bean
.
endX
,
bean
.
endY
,
0
));
Log
.
i
(
SuperAppium
.
TAG
,
"dispatch MotionEvent.ACTION_UP..."
);
theView
.
dispatchInputEvent
(
genFingerEvent
(
MotionEvent
.
ACTION_UP
,
bean
.
endX
,
bean
.
endY
));
isScrolling
=
false
;
}
else
{
theView
.
dispatchInputEvent
(
MotionEvent
.
obtain
(
downTime
,
downTime
,
MotionEvent
.
ACTION_MOVE
,
bean
.
startX
+
bean
.
ratioX
*
count
,
bean
.
startY
+
bean
.
ratioY
*
count
,
0
));
Log
.
i
(
SuperAppium
.
TAG
,
"dispatch MotionEvent.ACTION_MOVE. now count: "
+
count
+
" totalCount: "
+
bean
.
totalCount
+
" x: "
+
(
bean
.
startX
+
bean
.
ratioX
*
count
)
+
" y: "
+
(
bean
.
startY
+
bean
.
ratioY
*
count
)
);
theView
.
dispatchPointerEvent
(
genFingerEvent
(
MotionEvent
.
ACTION_MOVE
,
bean
.
startX
+
bean
.
ratioX
*
count
,
bean
.
startY
+
bean
.
ratioY
*
count
));
bean
.
count
++;
Message
message
=
new
Message
();
message
.
obj
=
bean
;
...
...
src/main/java/com/virjar/ratel/api/extension/superappium/ViewImage.java
View file @
bf41ac2d
...
...
@@ -333,6 +333,11 @@ public class ViewImage {
return
true
;
}
public
boolean
dispatchPointerEvent
(
MotionEvent
inputEvent
)
{
View
rootView
=
rootViewImage
().
getOriginView
();
return
rootView
.
dispatchTouchEvent
(
inputEvent
);
}
@SuppressLint
(
"NewApi"
)
private
boolean
clickV2
()
{
float
[]
floats
=
measureClickPoint
();
...
...
@@ -357,6 +362,7 @@ public class ViewImage {
@SuppressLint
(
"NewApi"
)
public
void
swipeDown
(
int
height
)
{
int
[]
locs
=
new
int
[
2
];
originView
.
getLocationOnScreen
(
locs
);
...
...
@@ -373,10 +379,6 @@ public class ViewImage {
}
@SuppressLint
(
"NewApi"
)
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
((
ThreadLocalRandom
.
current
().
nextDouble
(
0.4
)
-
0.2
));
}
private
MotionEvent
genMotionEvent
(
int
action
,
float
[]
point
)
{
long
downTime
=
SystemClock
.
uptimeMillis
();
...
...
src/main/java/com/virjar/ratel/api/extension/superappium/xmodel/ValueGetters.java
View file @
bf41ac2d
...
...
@@ -18,6 +18,7 @@ import com.virjar.ratel.api.extension.superappium.xmodel.view.IndexGetter;
import
com.virjar.ratel.api.extension.superappium.xmodel.view.LongClickableValueGetter
;
import
com.virjar.ratel.api.extension.superappium.xmodel.view.PackageNameValueGetter
;
import
com.virjar.ratel.api.extension.superappium.xmodel.view.SelectedValueGetter
;
import
com.virjar.ratel.api.extension.superappium.xmodel.view.VisibleValueGetter
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
...
...
@@ -42,6 +43,7 @@ public class ValueGetters {
valueGetters
.
add
(
new
ClickableValueGetter
());
valueGetters
.
add
(
new
ContentDescriptionValueGetter
());
valueGetters
.
add
(
new
EnabledValueGetter
());
valueGetters
.
add
(
new
VisibleValueGetter
());
valueGetters
.
add
(
new
FocusableValueGetter
());
valueGetters
.
add
(
new
LongClickableValueGetter
());
valueGetters
.
add
(
new
PackageNameValueGetter
());
...
...
src/main/java/com/virjar/ratel/api/extension/superappium/xmodel/view/VisibleValueGetter.java
0 → 100644
View file @
bf41ac2d
package
com
.
virjar
.
ratel
.
api
.
extension
.
superappium
.
xmodel
.
view
;
import
android.graphics.Rect
;
import
com.virjar.ratel.api.extension.superappium.SuperAppium
;
import
com.virjar.ratel.api.extension.superappium.ViewImage
;
import
com.virjar.ratel.api.extension.superappium.xmodel.ValueGetter
;
public
class
VisibleValueGetter
implements
ValueGetter
<
Boolean
>
{
@Override
public
Boolean
get
(
ViewImage
viewImage
)
{
return
viewImage
.
getOriginView
().
getLocalVisibleRect
(
new
Rect
());
}
@Override
public
boolean
support
(
Class
type
)
{
return
true
;
}
@Override
public
String
attr
()
{
return
SuperAppium
.
visible
;
}
}
src/main/java/com/virjar/ratel/api/extension/superappium/xpath/function/FunctionEnv.java
View file @
bf41ac2d
...
...
@@ -13,6 +13,7 @@ import com.virjar.ratel.api.extension.superappium.xpath.function.axis.FollowingS
import
com.virjar.ratel.api.extension.superappium.xpath.function.axis.FollowingSiblingOneFunction
;
import
com.virjar.ratel.api.extension.superappium.xpath.function.axis.ParentFunction
;
import
com.virjar.ratel.api.extension.superappium.xpath.function.axis.PrecedingSiblingFunction
;
import
com.virjar.ratel.api.extension.superappium.xpath.function.axis.PrecedingSiblingOneFunction
;
import
com.virjar.ratel.api.extension.superappium.xpath.function.axis.SiblingFunction
;
import
com.virjar.ratel.api.extension.superappium.xpath.function.filter.AbsFunction
;
import
com.virjar.ratel.api.extension.superappium.xpath.function.filter.BooleanFunction
;
...
...
@@ -136,6 +137,7 @@ public class FunctionEnv {
registerAxisFunciton
(
new
DescendantOrSelfFunction
());
registerAxisFunciton
(
new
FollowingSiblingFunction
());
registerAxisFunciton
(
new
FollowingSiblingOneFunction
());
registerAxisFunciton
(
new
PrecedingSiblingOneFunction
());
registerAxisFunciton
(
new
ParentFunction
());
registerAxisFunciton
(
new
PrecedingSiblingFunction
());
registerAxisFunciton
(
new
com
.
virjar
.
ratel
.
api
.
extension
.
superappium
.
xpath
.
function
.
axis
.
SelfFunction
());
...
...
src/main/java/com/virjar/ratel/api/extension/superappium/xpath/function/axis/PrecedingSiblingOneFunction.java
0 → 100644
View file @
bf41ac2d
package
com
.
virjar
.
ratel
.
api
.
extension
.
superappium
.
xpath
.
function
.
axis
;
import
com.virjar.ratel.api.extension.superappium.ViewImage
;
import
com.virjar.ratel.api.extension.superappium.ViewImages
;
import
java.util.List
;
public
class
PrecedingSiblingOneFunction
implements
AxisFunction
{
@Override
public
ViewImages
call
(
ViewImage
e
,
List
<
String
>
args
)
{
ViewImages
rs
=
new
ViewImages
();
if
(
e
.
previousSibling
()
!=
null
)
{
rs
.
add
(
e
.
previousSibling
());
}
return
rs
;
}
@Override
public
String
getName
()
{
return
"preceding-sibling-one"
;
}
}
src/main/java/com/virjar/ratel/api/extension/superappium/xpath/function/filter/ContainsFunction.java
View file @
bf41ac2d
...
...
@@ -9,7 +9,11 @@ public class ContainsFunction implements FilterFunction {
@Override
public
Object
call
(
ViewImage
element
,
List
<
SyntaxNode
>
params
)
{
// Preconditions.checkArgument(params.size() >= 2, "contains need 2 params");
return
params
.
get
(
0
).
calc
(
element
).
toString
().
contains
(
params
.
get
(
1
).
calc
(
element
).
toString
());
Object
containerObjc
=
params
.
get
(
0
).
calc
(
element
);
if
(
containerObjc
==
null
)
{
return
false
;
}
return
containerObjc
.
toString
().
contains
(
params
.
get
(
1
).
calc
(
element
).
toString
());
}
@Override
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment