Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
Kivii.Test.WebDriver
Project
Overview
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
示例代码
Kivii.Test.WebDriver
Commits
42609465
Commit
42609465
authored
Nov 09, 2023
by
施晓雨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新代码示例
parent
b6fef2b9
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
438 additions
and
297 deletions
+438
-297
MyAction.cs
Actions/MyAction.cs
+2
-2
FrmMain.Designer.cs
FrmMain.Designer.cs
+232
-147
FrmMain.cs
FrmMain.cs
+161
-122
Kivii.Test.WebDriver.csproj
Kivii.Test.WebDriver.csproj
+3
-2
MouseTest.cs
Tests/MouseTest.cs
+12
-12
ReferenceTest.cs
Tests/ReferenceTest.cs
+16
-0
WeatherTest.cs
Tests/WeatherTest.cs
+11
-11
packages.config
packages.config
+1
-1
No files found.
Actions/MyAction.cs
View file @
42609465
...
...
@@ -12,11 +12,11 @@ namespace Kivii.Test.WebDriver
internal
class
MyJsAction
:
ActionBase
{
public
string
Js
{
get
;
set
;
}
public
override
string
Execute
(
Manager
manager
)
public
override
string
Execute
(
Window
window
)
{
try
{
var
value
=
manager
.
ExecuteScript
(
Js
);
var
value
=
window
.
ExecuteScript
(
Js
);
return
value
;
}
catch
(
Exception
ex
)
...
...
FrmMain.Designer.cs
View file @
42609465
...
...
@@ -28,21 +28,26 @@
/// </summary>
private
void
InitializeComponent
()
{
this
.
btn
Open
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btn
Cl
ose
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btn
Initialize
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btn
Disp
ose
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
cbxBrowserType
=
new
System
.
Windows
.
Forms
.
ComboBox
();
this
.
label2
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
btnScreenshot
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
label3
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
cbxRemote
=
new
System
.
Windows
.
Forms
.
CheckBox
();
this
.
groupBox1
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
btnSwitchWindow
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
panel5
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
lblCurrenWindow
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
btnCloseCurrentWindow
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
label7
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
cbWindows
=
new
System
.
Windows
.
Forms
.
ComboBox
();
this
.
cbUseHub
=
new
System
.
Windows
.
Forms
.
CheckBox
();
this
.
lnkVncUrl
=
new
System
.
Windows
.
Forms
.
LinkLabel
();
this
.
panel2
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
groupBox3
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
groupBox2
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
btnInjection
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnHandlers
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnSetReference
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
label6
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
label4
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
label1
=
new
System
.
Windows
.
Forms
.
Label
();
...
...
@@ -59,22 +64,24 @@
this
.
tpEngineScript
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
rtbEngineScript
=
new
System
.
Windows
.
Forms
.
RichTextBox
();
this
.
pnlEngineToolBar
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
btnAutoAppendScript
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnExecuteEngine
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
cbScriptTip
=
new
System
.
Windows
.
Forms
.
ComboBox
();
this
.
btnAutoAppendScript
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnManagerExecuteScript
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
label5
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
tpWebScript
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
rtbWebScript
=
new
System
.
Windows
.
Forms
.
RichTextBox
();
this
.
panel1
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
btnExecuteScript
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btn
Window
ExecuteScript
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
tpActionJson
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
rtbActionsJson
=
new
System
.
Windows
.
Forms
.
RichTextBox
();
this
.
panel4
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
btnShowActionsTip
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnMouseDemo
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnActionsDemo
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnActionsJson
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnMouseDemo
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btnShowActionsTip
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
cbxHidenLocalCommandWindow
=
new
System
.
Windows
.
Forms
.
CheckBox
();
this
.
groupBox1
.
SuspendLayout
();
this
.
panel5
.
SuspendLayout
();
this
.
panel2
.
SuspendLayout
();
this
.
groupBox2
.
SuspendLayout
();
this
.
panel3
.
SuspendLayout
();
...
...
@@ -89,25 +96,25 @@
this
.
panel4
.
SuspendLayout
();
this
.
SuspendLayout
();
//
// btn
Open
// btn
Initialize
//
this
.
btn
Open
.
Location
=
new
System
.
Drawing
.
Point
(
8
,
91
);
this
.
btn
Open
.
Name
=
"btnOpen
"
;
this
.
btn
Open
.
Size
=
new
System
.
Drawing
.
Size
(
75
,
23
);
this
.
btn
Open
.
TabIndex
=
0
;
this
.
btn
Open
.
Text
=
"启动"
;
this
.
btn
Open
.
UseVisualStyleBackColor
=
true
;
this
.
btn
Open
.
Click
+=
new
System
.
EventHandler
(
this
.
btnOpen
_Click
);
this
.
btn
Initialize
.
Location
=
new
System
.
Drawing
.
Point
(
6
,
79
);
this
.
btn
Initialize
.
Name
=
"btnInitialize
"
;
this
.
btn
Initialize
.
Size
=
new
System
.
Drawing
.
Size
(
53
,
23
);
this
.
btn
Initialize
.
TabIndex
=
0
;
this
.
btn
Initialize
.
Text
=
"启动"
;
this
.
btn
Initialize
.
UseVisualStyleBackColor
=
true
;
this
.
btn
Initialize
.
Click
+=
new
System
.
EventHandler
(
this
.
btnInitialize
_Click
);
//
// btn
Cl
ose
// btn
Disp
ose
//
this
.
btn
Close
.
Location
=
new
System
.
Drawing
.
Point
(
103
,
91
);
this
.
btn
Close
.
Name
=
"btnCl
ose"
;
this
.
btn
Close
.
Size
=
new
System
.
Drawing
.
Size
(
75
,
23
);
this
.
btn
Cl
ose
.
TabIndex
=
0
;
this
.
btn
Close
.
Text
=
"关闭
"
;
this
.
btn
Cl
ose
.
UseVisualStyleBackColor
=
true
;
this
.
btn
Close
.
Click
+=
new
System
.
EventHandler
(
this
.
btnCl
ose_Click
);
this
.
btn
Dispose
.
Location
=
new
System
.
Drawing
.
Point
(
73
,
79
);
this
.
btn
Dispose
.
Name
=
"btnDisp
ose"
;
this
.
btn
Dispose
.
Size
=
new
System
.
Drawing
.
Size
(
54
,
23
);
this
.
btn
Disp
ose
.
TabIndex
=
0
;
this
.
btn
Dispose
.
Text
=
"销毁
"
;
this
.
btn
Disp
ose
.
UseVisualStyleBackColor
=
true
;
this
.
btn
Dispose
.
Click
+=
new
System
.
EventHandler
(
this
.
btnDisp
ose_Click
);
//
// cbxBrowserType
//
...
...
@@ -126,7 +133,7 @@
// label2
//
this
.
label2
.
AutoSize
=
true
;
this
.
label2
.
Location
=
new
System
.
Drawing
.
Point
(
6
,
28
);
this
.
label2
.
Location
=
new
System
.
Drawing
.
Point
(
1
,
28
);
this
.
label2
.
Name
=
"label2"
;
this
.
label2
.
Size
=
new
System
.
Drawing
.
Size
(
59
,
12
);
this
.
label2
.
TabIndex
=
1
;
...
...
@@ -134,9 +141,9 @@
//
// btnScreenshot
//
this
.
btnScreenshot
.
Location
=
new
System
.
Drawing
.
Point
(
1
94
,
91
);
this
.
btnScreenshot
.
Location
=
new
System
.
Drawing
.
Point
(
1
33
,
79
);
this
.
btnScreenshot
.
Name
=
"btnScreenshot"
;
this
.
btnScreenshot
.
Size
=
new
System
.
Drawing
.
Size
(
7
5
,
23
);
this
.
btnScreenshot
.
Size
=
new
System
.
Drawing
.
Size
(
5
5
,
23
);
this
.
btnScreenshot
.
TabIndex
=
0
;
this
.
btnScreenshot
.
Text
=
"截图"
;
this
.
btnScreenshot
.
UseVisualStyleBackColor
=
true
;
...
...
@@ -145,7 +152,7 @@
// label3
//
this
.
label3
.
AutoSize
=
true
;
this
.
label3
.
Location
=
new
System
.
Drawing
.
Point
(
6
,
57
);
this
.
label3
.
Location
=
new
System
.
Drawing
.
Point
(
1
,
57
);
this
.
label3
.
Name
=
"label3"
;
this
.
label3
.
Size
=
new
System
.
Drawing
.
Size
(
59
,
12
);
this
.
label3
.
TabIndex
=
1
;
...
...
@@ -164,28 +171,92 @@
//
// groupBox1
//
this
.
groupBox1
.
Controls
.
Add
(
this
.
cbxHidenLocalCommandWindow
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
btnSwitchWindow
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
panel5
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
label7
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
cbWindows
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
cbUseHub
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
lnkVncUrl
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
label2
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
btn
Open
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
btn
Initialize
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
cbxRemote
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
btn
Cl
ose
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
btn
Disp
ose
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
btnScreenshot
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
cbxBrowserType
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
label3
);
this
.
groupBox1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Top
;
this
.
groupBox1
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
groupBox1
.
Name
=
"groupBox1"
;
this
.
groupBox1
.
Size
=
new
System
.
Drawing
.
Size
(
2
87
,
130
);
this
.
groupBox1
.
Size
=
new
System
.
Drawing
.
Size
(
2
93
,
184
);
this
.
groupBox1
.
TabIndex
=
8
;
this
.
groupBox1
.
TabStop
=
false
;
this
.
groupBox1
.
Text
=
"基础操作"
;
//
// btnSwitchWindow
//
this
.
btnSwitchWindow
.
Location
=
new
System
.
Drawing
.
Point
(
238
,
105
);
this
.
btnSwitchWindow
.
Name
=
"btnSwitchWindow"
;
this
.
btnSwitchWindow
.
Size
=
new
System
.
Drawing
.
Size
(
49
,
23
);
this
.
btnSwitchWindow
.
TabIndex
=
14
;
this
.
btnSwitchWindow
.
Text
=
"打开"
;
this
.
btnSwitchWindow
.
UseVisualStyleBackColor
=
true
;
this
.
btnSwitchWindow
.
Click
+=
new
System
.
EventHandler
(
this
.
btnSwitchWindow_Click
);
//
// panel5
//
this
.
panel5
.
Controls
.
Add
(
this
.
lblCurrenWindow
);
this
.
panel5
.
Controls
.
Add
(
this
.
btnCloseCurrentWindow
);
this
.
panel5
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Bottom
;
this
.
panel5
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
143
);
this
.
panel5
.
Name
=
"panel5"
;
this
.
panel5
.
Size
=
new
System
.
Drawing
.
Size
(
287
,
38
);
this
.
panel5
.
TabIndex
=
13
;
//
// lblCurrenWindow
//
this
.
lblCurrenWindow
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
lblCurrenWindow
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
lblCurrenWindow
.
Name
=
"lblCurrenWindow"
;
this
.
lblCurrenWindow
.
Size
=
new
System
.
Drawing
.
Size
(
238
,
38
);
this
.
lblCurrenWindow
.
TabIndex
=
10
;
this
.
lblCurrenWindow
.
Text
=
"当前窗口"
;
//
// btnCloseCurrentWindow
//
this
.
btnCloseCurrentWindow
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
btnCloseCurrentWindow
.
Location
=
new
System
.
Drawing
.
Point
(
238
,
0
);
this
.
btnCloseCurrentWindow
.
Name
=
"btnCloseCurrentWindow"
;
this
.
btnCloseCurrentWindow
.
Size
=
new
System
.
Drawing
.
Size
(
49
,
38
);
this
.
btnCloseCurrentWindow
.
TabIndex
=
9
;
this
.
btnCloseCurrentWindow
.
Text
=
"关闭当前窗口"
;
this
.
btnCloseCurrentWindow
.
UseVisualStyleBackColor
=
true
;
this
.
btnCloseCurrentWindow
.
Click
+=
new
System
.
EventHandler
(
this
.
btnCloseCurrentWindow_Click
);
//
// label7
//
this
.
label7
.
AutoSize
=
true
;
this
.
label7
.
Location
=
new
System
.
Drawing
.
Point
(
1
,
113
);
this
.
label7
.
Name
=
"label7"
;
this
.
label7
.
Size
=
new
System
.
Drawing
.
Size
(
59
,
12
);
this
.
label7
.
TabIndex
=
10
;
this
.
label7
.
Text
=
"选择窗口:"
;
//
// cbWindows
//
this
.
cbWindows
.
DropDownStyle
=
System
.
Windows
.
Forms
.
ComboBoxStyle
.
DropDownList
;
this
.
cbWindows
.
FormattingEnabled
=
true
;
this
.
cbWindows
.
Location
=
new
System
.
Drawing
.
Point
(
72
,
107
);
this
.
cbWindows
.
Name
=
"cbWindows"
;
this
.
cbWindows
.
Size
=
new
System
.
Drawing
.
Size
(
163
,
20
);
this
.
cbWindows
.
TabIndex
=
11
;
this
.
cbWindows
.
Enter
+=
new
System
.
EventHandler
(
this
.
cbWindows_Enter
);
//
// cbUseHub
//
this
.
cbUseHub
.
AutoSize
=
true
;
this
.
cbUseHub
.
Enabled
=
false
;
this
.
cbUseHub
.
Location
=
new
System
.
Drawing
.
Point
(
2
17
,
24
);
this
.
cbUseHub
.
Location
=
new
System
.
Drawing
.
Point
(
2
08
,
24
);
this
.
cbUseHub
.
Name
=
"cbUseHub"
;
this
.
cbUseHub
.
Size
=
new
System
.
Drawing
.
Size
(
42
,
16
);
this
.
cbUseHub
.
TabIndex
=
7
;
...
...
@@ -211,23 +282,22 @@
this
.
panel2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
panel2
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
panel2
.
Name
=
"panel2"
;
this
.
panel2
.
Size
=
new
System
.
Drawing
.
Size
(
2
87
,
632
);
this
.
panel2
.
Size
=
new
System
.
Drawing
.
Size
(
2
93
,
632
);
this
.
panel2
.
TabIndex
=
10
;
//
// groupBox3
//
this
.
groupBox3
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Top
;
this
.
groupBox3
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
277
);
this
.
groupBox3
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
331
);
this
.
groupBox3
.
Name
=
"groupBox3"
;
this
.
groupBox3
.
Size
=
new
System
.
Drawing
.
Size
(
2
87
,
136
);
this
.
groupBox3
.
Size
=
new
System
.
Drawing
.
Size
(
2
93
,
136
);
this
.
groupBox3
.
TabIndex
=
12
;
this
.
groupBox3
.
TabStop
=
false
;
this
.
groupBox3
.
Text
=
"自动化测试"
;
//
// groupBox2
//
this
.
groupBox2
.
Controls
.
Add
(
this
.
btnInjection
);
this
.
groupBox2
.
Controls
.
Add
(
this
.
btnHandlers
);
this
.
groupBox2
.
Controls
.
Add
(
this
.
btnSetReference
);
this
.
groupBox2
.
Controls
.
Add
(
this
.
label6
);
this
.
groupBox2
.
Controls
.
Add
(
this
.
label4
);
this
.
groupBox2
.
Controls
.
Add
(
this
.
label1
);
...
...
@@ -237,32 +307,22 @@
this
.
groupBox2
.
Controls
.
Add
(
this
.
tbxVarName
);
this
.
groupBox2
.
Controls
.
Add
(
this
.
tbxScriptPath
);
this
.
groupBox2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Top
;
this
.
groupBox2
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
1
30
);
this
.
groupBox2
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
1
84
);
this
.
groupBox2
.
Name
=
"groupBox2"
;
this
.
groupBox2
.
Size
=
new
System
.
Drawing
.
Size
(
2
87
,
147
);
this
.
groupBox2
.
Size
=
new
System
.
Drawing
.
Size
(
2
93
,
147
);
this
.
groupBox2
.
TabIndex
=
10
;
this
.
groupBox2
.
TabStop
=
false
;
this
.
groupBox2
.
Text
=
"原生功能"
;
//
// btnInjection
//
this
.
btnInjection
.
Location
=
new
System
.
Drawing
.
Point
(
228
,
73
);
this
.
btnInjection
.
Name
=
"btnInjection"
;
this
.
btnInjection
.
Size
=
new
System
.
Drawing
.
Size
(
48
,
23
);
this
.
btnInjection
.
TabIndex
=
12
;
this
.
btnInjection
.
Text
=
"注入"
;
this
.
btnInjection
.
UseVisualStyleBackColor
=
true
;
this
.
btnInjection
.
Click
+=
new
System
.
EventHandler
(
this
.
btnInjection_Click
);
// btnSetReference
//
// btnHandlers
//
this
.
btnHandlers
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
101
);
this
.
btnHandlers
.
Name
=
"btnHandlers"
;
this
.
btnHandlers
.
Size
=
new
System
.
Drawing
.
Size
(
72
,
23
);
this
.
btnHandlers
.
TabIndex
=
4
;
this
.
btnHandlers
.
Text
=
"输出窗口"
;
this
.
btnHandlers
.
UseVisualStyleBackColor
=
true
;
this
.
btnHandlers
.
Click
+=
new
System
.
EventHandler
(
this
.
btnHandlers_Click
);
this
.
btnSetReference
.
Location
=
new
System
.
Drawing
.
Point
(
228
,
73
);
this
.
btnSetReference
.
Name
=
"btnSetReference"
;
this
.
btnSetReference
.
Size
=
new
System
.
Drawing
.
Size
(
48
,
23
);
this
.
btnSetReference
.
TabIndex
=
12
;
this
.
btnSetReference
.
Text
=
"注入"
;
this
.
btnSetReference
.
UseVisualStyleBackColor
=
true
;
this
.
btnSetReference
.
Click
+=
new
System
.
EventHandler
(
this
.
btnSetReference_Click
);
//
// label6
//
...
...
@@ -340,9 +400,9 @@
this
.
panel3
.
Controls
.
Add
(
this
.
gbMsg
);
this
.
panel3
.
Controls
.
Add
(
this
.
gbScript
);
this
.
panel3
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
panel3
.
Location
=
new
System
.
Drawing
.
Point
(
2
87
,
0
);
this
.
panel3
.
Location
=
new
System
.
Drawing
.
Point
(
2
93
,
0
);
this
.
panel3
.
Name
=
"panel3"
;
this
.
panel3
.
Size
=
new
System
.
Drawing
.
Size
(
8
40
,
632
);
this
.
panel3
.
Size
=
new
System
.
Drawing
.
Size
(
8
34
,
632
);
this
.
panel3
.
TabIndex
=
12
;
//
// gbMsg
...
...
@@ -351,7 +411,7 @@
this
.
gbMsg
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
gbMsg
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
gbMsg
.
Name
=
"gbMsg"
;
this
.
gbMsg
.
Size
=
new
System
.
Drawing
.
Size
(
8
40
,
349
);
this
.
gbMsg
.
Size
=
new
System
.
Drawing
.
Size
(
8
34
,
349
);
this
.
gbMsg
.
TabIndex
=
14
;
this
.
gbMsg
.
TabStop
=
false
;
this
.
gbMsg
.
Text
=
"输出"
;
...
...
@@ -362,7 +422,7 @@
this
.
rtbMsg
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
17
);
this
.
rtbMsg
.
Name
=
"rtbMsg"
;
this
.
rtbMsg
.
ReadOnly
=
true
;
this
.
rtbMsg
.
Size
=
new
System
.
Drawing
.
Size
(
8
34
,
329
);
this
.
rtbMsg
.
Size
=
new
System
.
Drawing
.
Size
(
8
28
,
329
);
this
.
rtbMsg
.
TabIndex
=
5
;
this
.
rtbMsg
.
Text
=
""
;
this
.
rtbMsg
.
DoubleClick
+=
new
System
.
EventHandler
(
this
.
rtbMsg_DoubleClick
);
...
...
@@ -373,7 +433,7 @@
this
.
gbScript
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Bottom
;
this
.
gbScript
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
349
);
this
.
gbScript
.
Name
=
"gbScript"
;
this
.
gbScript
.
Size
=
new
System
.
Drawing
.
Size
(
8
40
,
283
);
this
.
gbScript
.
Size
=
new
System
.
Drawing
.
Size
(
8
34
,
283
);
this
.
gbScript
.
TabIndex
=
13
;
this
.
gbScript
.
TabStop
=
false
;
this
.
gbScript
.
Text
=
"执行Javascript脚本"
;
...
...
@@ -387,7 +447,7 @@
this
.
tabScripts
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
17
);
this
.
tabScripts
.
Name
=
"tabScripts"
;
this
.
tabScripts
.
SelectedIndex
=
0
;
this
.
tabScripts
.
Size
=
new
System
.
Drawing
.
Size
(
8
34
,
263
);
this
.
tabScripts
.
Size
=
new
System
.
Drawing
.
Size
(
8
28
,
263
);
this
.
tabScripts
.
TabIndex
=
8
;
//
// tpEngineScript
...
...
@@ -397,7 +457,7 @@
this
.
tpEngineScript
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
22
);
this
.
tpEngineScript
.
Name
=
"tpEngineScript"
;
this
.
tpEngineScript
.
Padding
=
new
System
.
Windows
.
Forms
.
Padding
(
3
);
this
.
tpEngineScript
.
Size
=
new
System
.
Drawing
.
Size
(
82
6
,
237
);
this
.
tpEngineScript
.
Size
=
new
System
.
Drawing
.
Size
(
82
0
,
237
);
this
.
tpEngineScript
.
TabIndex
=
0
;
this
.
tpEngineScript
.
Tag
=
"engine"
;
this
.
tpEngineScript
.
Text
=
"引擎执行(driver为变量名)"
;
...
...
@@ -409,74 +469,80 @@
this
.
rtbEngineScript
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
rtbEngineScript
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
rtbEngineScript
.
Name
=
"rtbEngineScript"
;
this
.
rtbEngineScript
.
Size
=
new
System
.
Drawing
.
Size
(
8
20
,
211
);
this
.
rtbEngineScript
.
Size
=
new
System
.
Drawing
.
Size
(
8
14
,
211
);
this
.
rtbEngineScript
.
TabIndex
=
10
;
this
.
rtbEngineScript
.
Text
=
""
;
//
// pnlEngineToolBar
//
this
.
pnlEngineToolBar
.
Controls
.
Add
(
this
.
btnAutoAppendScript
);
this
.
pnlEngineToolBar
.
Controls
.
Add
(
this
.
btnExecuteEngine
);
this
.
pnlEngineToolBar
.
Controls
.
Add
(
this
.
cbScriptTip
);
this
.
pnlEngineToolBar
.
Controls
.
Add
(
this
.
btnAutoAppendScript
);
this
.
pnlEngineToolBar
.
Controls
.
Add
(
this
.
btnManagerExecuteScript
);
this
.
pnlEngineToolBar
.
Controls
.
Add
(
this
.
label5
);
this
.
pnlEngineToolBar
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Bottom
;
this
.
pnlEngineToolBar
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
214
);
this
.
pnlEngineToolBar
.
Name
=
"pnlEngineToolBar"
;
this
.
pnlEngineToolBar
.
Size
=
new
System
.
Drawing
.
Size
(
8
20
,
20
);
this
.
pnlEngineToolBar
.
Size
=
new
System
.
Drawing
.
Size
(
8
14
,
20
);
this
.
pnlEngineToolBar
.
TabIndex
=
9
;
//
// btnAutoAppendScript
//
this
.
btnAutoAppendScript
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
btnAutoAppendScript
.
Location
=
new
System
.
Drawing
.
Point
(
689
,
0
);
this
.
btnAutoAppendScript
.
Name
=
"btnAutoAppendScript"
;
this
.
btnAutoAppendScript
.
Size
=
new
System
.
Drawing
.
Size
(
56
,
20
);
this
.
btnAutoAppendScript
.
TabIndex
=
5
;
this
.
btnAutoAppendScript
.
Text
=
"选择 ↑ "
;
this
.
btnAutoAppendScript
.
UseVisualStyleBackColor
=
true
;
//
// btnExecuteEngine
//
this
.
btnExecuteEngine
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
btnExecuteEngine
.
Location
=
new
System
.
Drawing
.
Point
(
745
,
0
);
this
.
btnExecuteEngine
.
Name
=
"btnExecuteEngine"
;
this
.
btnExecuteEngine
.
Size
=
new
System
.
Drawing
.
Size
(
75
,
20
);
this
.
btnExecuteEngine
.
TabIndex
=
4
;
this
.
btnExecuteEngine
.
Text
=
"执行脚本"
;
this
.
btnExecuteEngine
.
UseVisualStyleBackColor
=
true
;
this
.
btnExecuteEngine
.
Click
+=
new
System
.
EventHandler
(
this
.
btnExecuteEngine_Click
);
//
// cbScriptTip
//
this
.
cbScriptTip
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
cbScriptTip
.
FormattingEnabled
=
true
;
this
.
cbScriptTip
.
Items
.
AddRange
(
new
object
[]
{
"
driver.LoadScript(\"\");//在当前页面加载一个JS路径
"
,
"driver.SwitchWindow(\"窗口
名称
\");//多个窗口时,选择一个窗口打开"
,
"driver.
Switch
NewWindow();//新的浏览器窗口"
,
"driver.
Switch
NewTab();//在浏览器中打开新标签窗口"
,
"
//管理器相关
"
,
"driver.SwitchWindow(\"窗口
句柄
\");//多个窗口时,选择一个窗口打开"
,
"driver.
Create
NewWindow();//新的浏览器窗口"
,
"driver.
Create
NewTab();//在浏览器中打开新标签窗口"
,
"driver.SwitchParentFrame();//选择当前的上一级Frame"
,
"driver.SwitchSubFrame(\"子窗口名称\")//选择子Frame"
,
"driver.SwitchSubFrame(子窗口索引数字);//选择子Frame"
,
"driver.Screenshot(“图片路径”);//保存截图"
,
"driver.ResetInputState();//重置输入框状态"
,
"driver.NavigateTo(\"url\");//导航跳转"
,
"driver.NavigateBack();//页面历史后退"
,
"driver.NavigateForward();//页面历史向前"
,
"driver.FullScreen();//浏览器全屏"
,
"driver.Maximize();//最大化窗口"
,
"driver.Minimize();//最小化窗口"
,
"driver.Close();//关闭当前窗口"
,
"driver.Dispose();//销毁当前程序,释放所有资源"
,
"driver.ExecuteScript(\"脚本\");//在网页中执行Javascript"
,
"driver.FindElement(\"/\",);//查找元素,默认查XPath"
,
"driver.FindElement(\"form1\",\"id\");//查找元素,"
,
"driver.FindElements(\"/\");//查找元素集合,默认查XPath"
,
"driver.FindElements(\"cls1\",\"classname\");//查找元素集合,"
,
"driver.Sleep(1000);//睡眠1000毫秒"
});
"driver.Sleep(1000);//睡眠1000毫秒"
,
"driver.Dispose();//销毁当前管理器,释放所有资源"
,
"//网页操作相关,只针对当前的窗口,切换窗口请先使用SwitchWindow(handle)方法"
,
"driver.CurrentWindow.NavigateTo(\"url\");//导航跳转"
,
"driver.CurrentWindow.NavigateBack();//页面历史后退"
,
"driver.CurrentWindow.NavigateForward();//页面历史向前"
,
"driver.CurrentWindow.NavigateRefresh();//页面强制刷新"
,
"driver.CurrentWindow.LoadScript(\"\");//在当前页面加载一个JS路径"
,
"driver.CurrentWindow.ExecuteScript(\"脚本\");//在网页中执行Javascript"
,
"driver.CurrentWindow.FindElement(\"/\",);//查找元素,默认查XPath"
,
"driver.CurrentWindow.FindElement(\"form1\",\"id\");//查找元素,第二个参数为查找类型,id,xpath,class,t"
+
"ag,name等"
,
"driver.CurrentWindow.FindElements(\"/\");//查找元素集合,默认查XPath"
,
"driver.CurrentWindow.FindElements(\"cls1\",\"classname\");//查找元素集合,"
,
"driver.CurrentWindow.Screenshot(“图片路径”);//保存截图"
,
"driver.CurrentWindow.ResetInputState();//重置输入框状态"
,
"driver.CurrentWindow.Close();//关闭当前窗口"
});
this
.
cbScriptTip
.
Location
=
new
System
.
Drawing
.
Point
(
59
,
0
);
this
.
cbScriptTip
.
Name
=
"cbScriptTip"
;
this
.
cbScriptTip
.
Size
=
new
System
.
Drawing
.
Size
(
645
,
20
);
this
.
cbScriptTip
.
TabIndex
=
3
;
this
.
cbScriptTip
.
Size
=
new
System
.
Drawing
.
Size
(
624
,
20
);
this
.
cbScriptTip
.
TabIndex
=
6
;
//
// btnAutoAppendScript
//
this
.
btnAutoAppendScript
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
btnAutoAppendScript
.
Location
=
new
System
.
Drawing
.
Point
(
683
,
0
);
this
.
btnAutoAppendScript
.
Name
=
"btnAutoAppendScript"
;
this
.
btnAutoAppendScript
.
Size
=
new
System
.
Drawing
.
Size
(
56
,
20
);
this
.
btnAutoAppendScript
.
TabIndex
=
5
;
this
.
btnAutoAppendScript
.
Text
=
"选择 ↑ "
;
this
.
btnAutoAppendScript
.
UseVisualStyleBackColor
=
true
;
this
.
btnAutoAppendScript
.
Click
+=
new
System
.
EventHandler
(
this
.
btnAutoAppendScript_Click
);
//
// btnManagerExecuteScript
//
this
.
btnManagerExecuteScript
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
btnManagerExecuteScript
.
Location
=
new
System
.
Drawing
.
Point
(
739
,
0
);
this
.
btnManagerExecuteScript
.
Name
=
"btnManagerExecuteScript"
;
this
.
btnManagerExecuteScript
.
Size
=
new
System
.
Drawing
.
Size
(
75
,
20
);
this
.
btnManagerExecuteScript
.
TabIndex
=
4
;
this
.
btnManagerExecuteScript
.
Text
=
"执行脚本"
;
this
.
btnManagerExecuteScript
.
UseVisualStyleBackColor
=
true
;
this
.
btnManagerExecuteScript
.
Click
+=
new
System
.
EventHandler
(
this
.
btnManagerExecuteScript_Click
);
//
// label5
//
...
...
@@ -513,23 +579,23 @@
//
// panel1
//
this
.
panel1
.
Controls
.
Add
(
this
.
btnExecuteScript
);
this
.
panel1
.
Controls
.
Add
(
this
.
btn
Window
ExecuteScript
);
this
.
panel1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Bottom
;
this
.
panel1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
214
);
this
.
panel1
.
Name
=
"panel1"
;
this
.
panel1
.
Size
=
new
System
.
Drawing
.
Size
(
820
,
20
);
this
.
panel1
.
TabIndex
=
10
;
//
// btnExecuteScript
// btn
Window
ExecuteScript
//
this
.
btnExecuteScript
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
btnExecuteScript
.
Location
=
new
System
.
Drawing
.
Point
(
745
,
0
);
this
.
btn
ExecuteScript
.
Name
=
"btn
ExecuteScript"
;
this
.
btnExecuteScript
.
Size
=
new
System
.
Drawing
.
Size
(
75
,
20
);
this
.
btnExecuteScript
.
TabIndex
=
5
;
this
.
btnExecuteScript
.
Text
=
"执行脚本"
;
this
.
btnExecuteScript
.
UseVisualStyleBackColor
=
true
;
this
.
btn
ExecuteScript
.
Click
+=
new
System
.
EventHandler
(
this
.
btn
ExecuteScript_Click
);
this
.
btn
Window
ExecuteScript
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
btn
Window
ExecuteScript
.
Location
=
new
System
.
Drawing
.
Point
(
745
,
0
);
this
.
btn
WindowExecuteScript
.
Name
=
"btnWindow
ExecuteScript"
;
this
.
btn
Window
ExecuteScript
.
Size
=
new
System
.
Drawing
.
Size
(
75
,
20
);
this
.
btn
Window
ExecuteScript
.
TabIndex
=
5
;
this
.
btn
Window
ExecuteScript
.
Text
=
"执行脚本"
;
this
.
btn
Window
ExecuteScript
.
UseVisualStyleBackColor
=
true
;
this
.
btn
WindowExecuteScript
.
Click
+=
new
System
.
EventHandler
(
this
.
btnWindow
ExecuteScript_Click
);
//
// tpActionJson
//
...
...
@@ -564,6 +630,28 @@
this
.
panel4
.
Size
=
new
System
.
Drawing
.
Size
(
826
,
20
);
this
.
panel4
.
TabIndex
=
12
;
//
// btnShowActionsTip
//
this
.
btnShowActionsTip
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
btnShowActionsTip
.
Location
=
new
System
.
Drawing
.
Point
(
144
,
0
);
this
.
btnShowActionsTip
.
Name
=
"btnShowActionsTip"
;
this
.
btnShowActionsTip
.
Size
=
new
System
.
Drawing
.
Size
(
72
,
20
);
this
.
btnShowActionsTip
.
TabIndex
=
16
;
this
.
btnShowActionsTip
.
Text
=
"显示动作类型"
;
this
.
btnShowActionsTip
.
UseVisualStyleBackColor
=
true
;
this
.
btnShowActionsTip
.
Click
+=
new
System
.
EventHandler
(
this
.
btnShowActionsTip_Click
);
//
// btnMouseDemo
//
this
.
btnMouseDemo
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
btnMouseDemo
.
Location
=
new
System
.
Drawing
.
Point
(
72
,
0
);
this
.
btnMouseDemo
.
Name
=
"btnMouseDemo"
;
this
.
btnMouseDemo
.
Size
=
new
System
.
Drawing
.
Size
(
72
,
20
);
this
.
btnMouseDemo
.
TabIndex
=
15
;
this
.
btnMouseDemo
.
Text
=
"鼠标示例"
;
this
.
btnMouseDemo
.
UseVisualStyleBackColor
=
true
;
this
.
btnMouseDemo
.
Click
+=
new
System
.
EventHandler
(
this
.
btnMouseDemo_Click
);
//
// btnActionsDemo
//
this
.
btnActionsDemo
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
...
...
@@ -571,7 +659,7 @@
this
.
btnActionsDemo
.
Name
=
"btnActionsDemo"
;
this
.
btnActionsDemo
.
Size
=
new
System
.
Drawing
.
Size
(
72
,
20
);
this
.
btnActionsDemo
.
TabIndex
=
13
;
this
.
btnActionsDemo
.
Text
=
"
加载
示例"
;
this
.
btnActionsDemo
.
Text
=
"
常规
示例"
;
this
.
btnActionsDemo
.
UseVisualStyleBackColor
=
true
;
this
.
btnActionsDemo
.
Click
+=
new
System
.
EventHandler
(
this
.
btnActionsDemo_Click
);
//
...
...
@@ -586,27 +674,17 @@
this
.
btnActionsJson
.
UseVisualStyleBackColor
=
true
;
this
.
btnActionsJson
.
Click
+=
new
System
.
EventHandler
(
this
.
btnActionsJson_Click
);
//
// btnMouseDemo
//
this
.
btnMouseDemo
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
btnMouseDemo
.
Location
=
new
System
.
Drawing
.
Point
(
72
,
0
);
this
.
btnMouseDemo
.
Name
=
"btnMouseDemo"
;
this
.
btnMouseDemo
.
Size
=
new
System
.
Drawing
.
Size
(
72
,
20
);
this
.
btnMouseDemo
.
TabIndex
=
15
;
this
.
btnMouseDemo
.
Text
=
"鼠标示例"
;
this
.
btnMouseDemo
.
UseVisualStyleBackColor
=
true
;
this
.
btnMouseDemo
.
Click
+=
new
System
.
EventHandler
(
this
.
btnMouseDemo_Click
);
//
// btnShowActionsTip
// cbxHidenLocalCommandWindow
//
this
.
btnShowActionsTip
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
btnShowActionsTip
.
Location
=
new
System
.
Drawing
.
Point
(
144
,
0
);
this
.
btnShowActionsTip
.
Name
=
"btnShowActionsTip"
;
this
.
btnShowActionsTip
.
Size
=
new
System
.
Drawing
.
Size
(
72
,
20
);
this
.
btnShowActionsTip
.
TabIndex
=
16
;
this
.
btnShowActionsTip
.
Text
=
"显示动作类型"
;
this
.
btnShowActionsTip
.
UseVisualStyleBackColor
=
true
;
this
.
btnShowActionsTip
.
Click
+=
new
System
.
EventHandler
(
this
.
btnShowActionsTip_Click
);
this
.
cbxHidenLocalCommandWindow
.
AutoSize
=
true
;
this
.
cbxHidenLocalCommandWindow
.
Checked
=
true
;
this
.
cbxHidenLocalCommandWindow
.
CheckState
=
System
.
Windows
.
Forms
.
CheckState
.
Checked
;
this
.
cbxHidenLocalCommandWindow
.
Location
=
new
System
.
Drawing
.
Point
(
163
,
53
);
this
.
cbxHidenLocalCommandWindow
.
Name
=
"cbxHidenLocalCommandWindow"
;
this
.
cbxHidenLocalCommandWindow
.
Size
=
new
System
.
Drawing
.
Size
(
84
,
16
);
this
.
cbxHidenLocalCommandWindow
.
TabIndex
=
15
;
this
.
cbxHidenLocalCommandWindow
.
Text
=
"隐藏命令行"
;
this
.
cbxHidenLocalCommandWindow
.
UseVisualStyleBackColor
=
true
;
//
// FrmMain
//
...
...
@@ -619,6 +697,7 @@
this
.
Text
=
"代码测试"
;
this
.
groupBox1
.
ResumeLayout
(
false
);
this
.
groupBox1
.
PerformLayout
();
this
.
panel5
.
ResumeLayout
(
false
);
this
.
panel2
.
ResumeLayout
(
false
);
this
.
groupBox2
.
ResumeLayout
(
false
);
this
.
groupBox2
.
PerformLayout
();
...
...
@@ -638,8 +717,8 @@
#
endregion
private
System
.
Windows
.
Forms
.
Button
btn
Open
;
private
System
.
Windows
.
Forms
.
Button
btn
Cl
ose
;
private
System
.
Windows
.
Forms
.
Button
btn
Initialize
;
private
System
.
Windows
.
Forms
.
Button
btn
Disp
ose
;
private
System
.
Windows
.
Forms
.
ComboBox
cbxBrowserType
;
private
System
.
Windows
.
Forms
.
Label
label2
;
private
System
.
Windows
.
Forms
.
Button
btnScreenshot
;
...
...
@@ -658,25 +737,23 @@
private
System
.
Windows
.
Forms
.
RichTextBox
rtbMsg
;
private
System
.
Windows
.
Forms
.
GroupBox
gbScript
;
private
System
.
Windows
.
Forms
.
Label
label4
;
private
System
.
Windows
.
Forms
.
Button
btnHandlers
;
private
System
.
Windows
.
Forms
.
TabControl
tabScripts
;
private
System
.
Windows
.
Forms
.
TabPage
tpEngineScript
;
private
System
.
Windows
.
Forms
.
TabPage
tpWebScript
;
private
System
.
Windows
.
Forms
.
RichTextBox
rtbEngineScript
;
private
System
.
Windows
.
Forms
.
Panel
pnlEngineToolBar
;
private
System
.
Windows
.
Forms
.
ComboBox
cbScriptTip
;
private
System
.
Windows
.
Forms
.
Label
label5
;
private
System
.
Windows
.
Forms
.
LinkLabel
lnkVncUrl
;
private
System
.
Windows
.
Forms
.
CheckBox
cbUseHub
;
private
System
.
Windows
.
Forms
.
Button
btn
Injection
;
private
System
.
Windows
.
Forms
.
Button
btn
SetReference
;
private
System
.
Windows
.
Forms
.
Label
label6
;
private
System
.
Windows
.
Forms
.
TextBox
tbxVarName
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox3
;
private
System
.
Windows
.
Forms
.
Button
btnAutoAppendScript
;
private
System
.
Windows
.
Forms
.
Button
btn
ExecuteEngine
;
private
System
.
Windows
.
Forms
.
Button
btn
ManagerExecuteScript
;
private
System
.
Windows
.
Forms
.
RichTextBox
rtbWebScript
;
private
System
.
Windows
.
Forms
.
Panel
panel1
;
private
System
.
Windows
.
Forms
.
Button
btnExecuteScript
;
private
System
.
Windows
.
Forms
.
Button
btn
Window
ExecuteScript
;
private
System
.
Windows
.
Forms
.
TabPage
tpActionJson
;
private
System
.
Windows
.
Forms
.
RichTextBox
rtbActionsJson
;
private
System
.
Windows
.
Forms
.
Panel
panel4
;
...
...
@@ -684,6 +761,14 @@
private
System
.
Windows
.
Forms
.
Button
btnActionsDemo
;
private
System
.
Windows
.
Forms
.
Button
btnMouseDemo
;
private
System
.
Windows
.
Forms
.
Button
btnShowActionsTip
;
private
System
.
Windows
.
Forms
.
ComboBox
cbScriptTip
;
private
System
.
Windows
.
Forms
.
Panel
panel5
;
private
System
.
Windows
.
Forms
.
Label
lblCurrenWindow
;
private
System
.
Windows
.
Forms
.
Button
btnCloseCurrentWindow
;
private
System
.
Windows
.
Forms
.
Label
label7
;
private
System
.
Windows
.
Forms
.
ComboBox
cbWindows
;
private
System
.
Windows
.
Forms
.
Button
btnSwitchWindow
;
private
System
.
Windows
.
Forms
.
CheckBox
cbxHidenLocalCommandWindow
;
}
}
FrmMain.cs
View file @
42609465
...
...
@@ -6,33 +6,50 @@ using OpenQA.Selenium.Firefox;
using
OpenQA.Selenium.Remote
;
using
OpenQA.Selenium.Support.Events
;
using
System
;
using
System.Linq
;
using
System.Windows.Forms
;
namespace
Kivii.Test.WebDriver
{
public
partial
class
FrmMain
:
Form
{
/// <summary>
/// 管理器
/// </summary>
private
Manager
_manager
=
null
;
#
region
初始化
public
FrmMain
()
{
InitializeComponent
();
}
#
endregion
#
region
输出日志相关
private
void
appendMsg
(
string
msg
)
{
rtbMsg
.
AppendText
(
$"
{
msg
}{
Environment
.
NewLine
}
"
);
rtbMsg
.
ScrollToCaret
();
}
/// <summary>
/// 双击输出消息,清除内容
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
rtbMsg_DoubleClick
(
object
sender
,
EventArgs
e
)
{
rtbMsg
.
Clear
();
}
#
endregion
#
region
事件
#
region
监听管理器的
事件
private
void
addListener
()
{
if
(
_manager
==
null
)
return
;
_manager
.
OnException
+=
manager_OnException
;
_manager
.
OnWindowChanged
+=
manager_OnWindowChanged
;
_manager
.
On
Current
WindowChanged
+=
manager_OnWindowChanged
;
//以下是WebDriver的事件
_manager
.
ElementClicked
+=
EventDriver_ElementClicked
;
_manager
.
ElementClicking
+=
EventDriver_ElementClicking
;
_manager
.
ElementValueChanging
+=
EventDriver_ElementValueChanging
;
...
...
@@ -54,22 +71,22 @@ namespace Kivii.Test.WebDriver
private
void
manager_OnWindowChanged
(
object
sender
,
Window
e
)
{
gbMsg
.
Text
=
$"输出(窗口Handle=
{
e
.
Handle
}
,Title=
{
e
.
Title
}
)
"
;
lblCurrenWindow
.
Text
=
$"当前窗口:
{(
_manager
?.
StartWindow
==
_manager
.
CurrentWindow
?
"主窗口"
:
"子窗口"
)}{
Environment
.
NewLine
}{
e
.
Handle
}{
Environment
.
NewLine
}
标题:
{
e
.
Title
}
"
;
}
private
void
manager_OnException
(
object
sender
,
Exception
e
)
{
appendMsg
(
$"
Exception
:
{
DateTime
.
Now
}{
Environment
.
NewLine
}{
e
.
Message
}{
Environment
.
NewLine
}{
e
.
StackTrace
}
"
);
appendMsg
(
$"
管理器执行异常
:
{
DateTime
.
Now
}{
Environment
.
NewLine
}{
e
.
Message
}{
Environment
.
NewLine
}{
e
.
StackTrace
}
"
);
}
private
void
EventDriver_ScriptExecuting
(
object
sender
,
WebDriverScriptEventArgs
e
)
{
appendMsg
(
$"
EventDriver_ScriptExecuting
:
{
Environment
.
NewLine
}{
e
.
Script
}
"
);
appendMsg
(
$"
网页脚本执行
:
{
Environment
.
NewLine
}{
e
.
Script
}
"
);
}
private
void
EventDriver_ScriptExecuted
(
object
sender
,
WebDriverScriptEventArgs
e
)
{
appendMsg
(
$"
EventDriver_ScriptExecuted
:
{
Environment
.
NewLine
}{
e
.
Script
}
"
);
appendMsg
(
$"
网页脚本执行成功
:
{
Environment
.
NewLine
}{
e
.
Script
}
"
);
}
private
void
EventDriver_NavigatingForward
(
object
sender
,
WebDriverNavigationEventArgs
e
)
...
...
@@ -124,7 +141,7 @@ namespace Kivii.Test.WebDriver
private
void
EventDriver_ExceptionThrown
(
object
sender
,
WebDriverExceptionEventArgs
e
)
{
appendMsg
(
$"EventDriver_ExceptionThrown:
{
Environment
.
NewLine
}{
e
}
"
);
appendMsg
(
$"EventDriver_ExceptionThrown:
{
Environment
.
NewLine
}{
e
.
ThrownException
?.
Message
}
"
);
}
private
void
EventDriver_ElementValueChanged
(
object
sender
,
WebElementValueEventArgs
e
)
...
...
@@ -148,17 +165,78 @@ namespace Kivii.Test.WebDriver
}
#
endregion
#
region
交互事件
#
region
组织管理器的配置
/// <summary>
/// 使用远程WebDriver选择框发生变化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
cbxRemote_CheckedChanged
(
object
sender
,
EventArgs
e
)
{
lnkVncUrl
.
Enabled
=
cbxRemote
.
Checked
;
cbUseHub
.
Enabled
=
cbxRemote
.
Checked
;
cbxHidenLocalCommandWindow
.
Visible
=!
cbxRemote
.
Checked
;
cbxBrowserType_SelectedIndexChanged
(
null
,
null
);
}
/// <summary>
/// 浏览器类型选择发生变化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
cbxBrowserType_SelectedIndexChanged
(
object
sender
,
EventArgs
e
)
{
if
(!
cbxRemote
.
Checked
)
{
lnkVncUrl
.
Text
=
null
;
return
;
}
if
(
cbUseHub
.
Checked
)
{
lnkVncUrl
.
Text
=
$"http://hub.selenium.kivii.org"
;
}
else
{
if
(
string
.
IsNullOrEmpty
(
cbxBrowserType
.
Text
))
{
lnkVncUrl
.
Text
=
null
;
}
else
{
lnkVncUrl
.
Text
=
$"http://viewer.
{
cbxBrowserType
.
Text
}
.selenium.kivii.org"
;
}
}
}
/// <summary>
/// 点击了远程浏览器VNC
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
lnkVncUrl_LinkClicked
(
object
sender
,
LinkLabelLinkClickedEventArgs
e
)
{
if
(
cbUseHub
.
Checked
)
{
System
.
Diagnostics
.
Process
.
Start
(
$"
{
lnkVncUrl
.
Text
}
"
);
}
else
{
System
.
Diagnostics
.
Process
.
Start
(
$"
{
lnkVncUrl
.
Text
}
/?autoconnect=1&resize=scale&password=secret"
);
}
}
#
endregion
#
region
初始化和销毁管理器
/// <summary>
/// 初始化管理器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btn
Open
_Click
(
object
sender
,
EventArgs
e
)
private
void
btn
Initialize
_Click
(
object
sender
,
EventArgs
e
)
{
if
(
_manager
!=
null
)
return
;
rtbMsg
.
Clear
();
_manager
=
new
Manager
();
_manager
.
HideCommandPromptWindow
=
cbxHidenLocalCommandWindow
.
Checked
;
//如果是本地运行,可选择隐藏本地服务的命令行
addListener
();
//管理器的2个事件是直接可以监听的,WebDriver的事件是需要等初始化完才能监听的
var
serviceUrl
=
string
.
Empty
;
if
(
cbxRemote
.
Checked
)
{
...
...
@@ -171,25 +249,22 @@ namespace Kivii.Test.WebDriver
serviceUrl
=
$"http://driver.
{
cbxBrowserType
.
Text
}
.selenium.kivii.org"
;
}
}
if
(
_manager
.
Initialize
(
cbxBrowserType
.
Text
,
serviceUrl
))
{
addListener
();
}
else
{
appendMsg
(
"初始化失败,可能是未能成功连接WebDriver驱动!"
);
}
var
result
=
_manager
.
Initialize
(
cbxBrowserType
.
Text
,
serviceUrl
)?
"成功"
:
"失败,可能是未能正确加载驱动"
;
appendMsg
(
$"初始化
{
result
}
"
);
}
/// <summary>
///
关闭
管理器
///
销毁
管理器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btn
Cl
ose_Click
(
object
sender
,
EventArgs
e
)
private
void
btn
Disp
ose_Click
(
object
sender
,
EventArgs
e
)
{
_manager
?.
Dispose
();
_manager
=
null
;
}
#
endregion
#
region
原生操作
/// <summary>
/// 浏览器截图
/// </summary>
...
...
@@ -201,7 +276,7 @@ namespace Kivii.Test.WebDriver
SaveFileDialog
sfd
=
new
SaveFileDialog
();
sfd
.
Filter
=
"图片文件|*.jpg"
;
if
(
sfd
.
ShowDialog
()
!=
DialogResult
.
OK
)
return
;
_manager
?.
Screenshot
(
sfd
.
FileName
);
_manager
?.
CurrentWindow
.
Screenshot
(
sfd
.
FileName
);
}
/// <summary>
/// 向网页加载一个脚本路径
...
...
@@ -210,128 +285,105 @@ namespace Kivii.Test.WebDriver
/// <param name="e"></param>
private
void
btnLoadScript_Click
(
object
sender
,
EventArgs
e
)
{
_manager
?.
LoadScript
(
tbxScriptPath
.
Text
);
_manager
?.
CurrentWindow
.
LoadScript
(
tbxScriptPath
.
Text
);
}
/// <summary>
///
使用远程WebDriver选择框发生变化
///
导航至某个网页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
cbxRemote_CheckedChanged
(
object
sender
,
EventArgs
e
)
private
void
btnNavigate_Click
(
object
sender
,
EventArgs
e
)
{
lnkVncUrl
.
Enabled
=
cbxRemote
.
Checked
;
cbUseHub
.
Enabled
=
cbxRemote
.
Checked
;
cbxBrowserType_SelectedIndexChanged
(
null
,
null
);
_manager
?.
CurrentWindow
.
NavigateTo
(
tbxUrl
.
Text
);
}
/// <summary>
///
浏览器类型选择发生变化
///
显示当前浏览器中所有的窗口信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
cbxBrowserType_SelectedIndexChanged
(
object
sender
,
EventArgs
e
)
{
if
(!
cbxRemote
.
Checked
)
{
lnkVncUrl
.
Text
=
null
;
return
;
}
if
(
cbUseHub
.
Checked
)
{
lnkVncUrl
.
Text
=
$"http://hub.selenium.kivii.org"
;
}
else
{
if
(
string
.
IsNullOrEmpty
(
cbxBrowserType
.
Text
))
private
void
btnHandlers_Click
(
object
sender
,
EventArgs
e
)
{
lnkVncUrl
.
Text
=
null
;
}
else
foreach
(
var
handler
in
_manager
.
AllWindowHandles
)
{
lnkVncUrl
.
Text
=
$"http://viewer.
{
cbxBrowserType
.
Text
}
.selenium.kivii.org"
;
}
appendMsg
(
$"Handle Name:
{
handler
}
"
);
}
appendMsg
(
$"Current Handle:
{
_manager
.
CurrentWindowHandle
}
"
);
}
/// <summary>
///
点击了远程浏览器VNC
///
向执行器加入一段代码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
lnkVncUrl_LinkClicked
(
object
sender
,
LinkLabelLinkClickedEventArgs
e
)
{
if
(
cbUseHub
.
Checked
)
{
System
.
Diagnostics
.
Process
.
Start
(
$"
{
lnkVncUrl
.
Text
}
"
);
}
else
private
void
btnAutoAppendScript_Click
(
object
sender
,
EventArgs
e
)
{
System
.
Diagnostics
.
Process
.
Start
(
$"
{
lnkVncUrl
.
Text
}
/?autoconnect=1&resize=scale&password=secret"
);
}
rtbEngineScript
.
AppendText
(
$"
{
cbScriptTip
.
Text
}{
Environment
.
NewLine
}
"
);
}
/// <summary>
///
导航至某个网页
///
向管理器引擎注入一个变量
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btn
Navigat
e_Click
(
object
sender
,
EventArgs
e
)
private
void
btn
SetReferenc
e_Click
(
object
sender
,
EventArgs
e
)
{
_manager
?.
NavigateTo
(
tbxUrl
.
Text
);
//向Manager中注入一个变量,可以在引擎执行代码中调用,变量名为tbxVarName中配置的
//这个功能可以注入一个服务器端存储或读取数量的类,方便交互,
_manager
?.
SetReference
(
tbxVarName
.
Text
,
new
ReferenceTest
());
appendMsg
(
$"注入了变量名为
{
tbxVarName
.
Text
}
,可在Manager.ExecuteScript()的脚本代码中使用该变量"
);
}
/// <summary>
/// 显示当前
浏览器中所有的窗口信息
/// 显示当前
应用程序域中所有Action动作的类型
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btn
Handlers
_Click
(
object
sender
,
EventArgs
e
)
private
void
btn
ShowActionsTip
_Click
(
object
sender
,
EventArgs
e
)
{
foreach
(
var
handler
in
_manager
.
AllWindowHandles
)
foreach
(
var
actionAttribute
in
ActionBase
.
GetActionAttributes
()
)
{
appendMsg
(
$"
Handler Name:
{
handler
}
"
);
appendMsg
(
$"
{
actionAttribute
.
Type
.
FullName
}{
Environment
.
NewLine
}
别名:\"
{
actionAttribute
.
Alias
}
\" 描述:
{
actionAttribute
.
Description
}
"
);
}
}
/// <summary>
/// 向执行器加入一段代码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btnAutoAppendScript_Click
(
object
sender
,
EventArgs
e
)
private
void
cbWindows_Enter
(
object
sender
,
EventArgs
e
)
{
rtbEngineScript
.
AppendText
(
$"
{
cbScriptTip
.
Text
}{
Environment
.
NewLine
}
"
);
cbWindows
.
Items
.
Clear
();
var
windows
=
_manager
?.
AllWindowHandles
.
ToArray
();
if
(
windows
==
null
)
return
;
cbWindows
.
Items
.
AddRange
(
windows
);
}
/// <summary>
///
向管理器引擎注入一个变量
///
选择一个窗口激活
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btn
Injection
_Click
(
object
sender
,
EventArgs
e
)
private
void
btn
SwitchWindow
_Click
(
object
sender
,
EventArgs
e
)
{
//向Manager中注入一个变量,可以在引擎执行代码中调用,变量名为tbxVarName中配置的
//这个功能可以注入一个服务器端存储或读取数量的类,方便交互,
//在引擎代码中可以直接调用test.MessageBox("内容")来与主程序交互功能
_manager
?.
Injection
(
tbxVarName
.
Text
,
new
InjectionTest
());
appendMsg
(
$"注入了变量名为
{
tbxVarName
.
Text
}
,可在引擎代码中执行
{
tbxVarName
.
Text
}
.
{
nameof
(
InjectionTest
.
MessageBox
)}
(\"消息\");或
{
tbxVarName
.
Text
}
.
{
nameof
(
InjectionTest
.
GetValue
)}
(\"内容\")"
);
_manager
?.
SwitchWindow
(
cbWindows
.
Text
);
}
#
endregion
/// <summary>
///
双击输出消息,清除内容
///
关闭当前窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
rtbMsg_Double
Click
(
object
sender
,
EventArgs
e
)
private
void
btnCloseCurrentWindow_
Click
(
object
sender
,
EventArgs
e
)
{
rtbMsg
.
Clear
();
_manager
?.
CurrentWindow
?.
Close
();
}
#
endregion
#
region
三个脚本执行功能
/// <summary>
/// 执行内置脚本引擎
/// 执行
Manager
内置脚本引擎
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btn
ExecuteEngine
_Click
(
object
sender
,
EventArgs
e
)
private
void
btn
ManagerExecuteScript
_Click
(
object
sender
,
EventArgs
e
)
{
var
result
=
_manager
.
Execute
(
rtbEngineScript
.
Text
);
var
result
=
_manager
.
Execute
Script
(
rtbEngineScript
.
Text
);
rtbEngineScript
.
Clear
();
appendMsg
(
$"Result:
{
result
}
"
);
}
...
...
@@ -341,23 +393,13 @@ namespace Kivii.Test.WebDriver
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btnExecuteScript_Click
(
object
sender
,
EventArgs
e
)
private
void
btn
Window
ExecuteScript_Click
(
object
sender
,
EventArgs
e
)
{
var
result
=
_manager
?.
ExecuteScript
(
rtbWebScript
.
Text
);
var
result
=
_manager
?.
CurrentWindow
.
ExecuteScript
(
rtbWebScript
.
Text
);
rtbWebScript
.
Clear
();
appendMsg
(
$"Result:
{
result
}
"
);
}
/// <summary>
/// 加载一段演示动作的Actions代码,JSON格式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btnActionsDemo_Click
(
object
sender
,
EventArgs
e
)
{
var
autoPage
=
WeatherTest
.
Get
();
var
json
=
autoPage
.
ExportActions
(
true
);
rtbActionsJson
.
Text
=
json
;
}
/// <summary>
/// 将Actions的JSON代码加载进WebPage中执行,URL的起始页使用界面上的tbxUrl中的值
/// </summary>
...
...
@@ -368,22 +410,26 @@ namespace Kivii.Test.WebDriver
if
(
_manager
==
null
)
return
;
_manager
.
Maximize
();
//最大化网页
var
autoPage
=
new
WebPage
(
_manager
);
autoPage
.
Url
=
tbxUrl
.
Text
;
//生成DEMO时不需要
autoPage
.
ImportActions
(
rtbActionsJson
.
Text
);
var
rtns
=
autoPage
.
Execute
();
var
window
=
new
Window
(
_manager
);
window
.
ImportActions
(
rtbActionsJson
.
Text
);
var
rtns
=
window
.
ExecuteActions
();
appendMsg
(
$"执行结果:
{
Environment
.
NewLine
}{
rtns
}
"
);
}
#
endregion
private
void
btnShowActionsTip_Click
(
object
sender
,
EventArgs
e
)
{
foreach
(
var
actionAttribute
in
ActionBase
.
GetActionAttributes
())
#
region
Action
的演示代码
/// <summary>
/// 加载一段演示动作的Actions代码,JSON格式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
btnActionsDemo_Click
(
object
sender
,
EventArgs
e
)
{
appendMsg
(
$"
{
actionAttribute
.
Type
.
FullName
}{
Environment
.
NewLine
}
别名:\"
{
actionAttribute
.
Alias
}
\" 描述:
{
actionAttribute
.
Description
}
"
);
}
var
autoPage
=
WeatherTest
.
Get
();
var
json
=
autoPage
.
ExportActions
(
true
);
rtbActionsJson
.
Text
=
json
;
}
/// <summary>
/// 鼠标动作示例
...
...
@@ -396,18 +442,11 @@ namespace Kivii.Test.WebDriver
var
json
=
autoPage
.
ExportActions
(
true
);
rtbActionsJson
.
Text
=
json
;
}
}
#
region
注入的对象
internal
class
InjectionTest
{
public
void
MessageBox
(
string
msg
)
{
System
.
Windows
.
Forms
.
MessageBox
.
Show
(
msg
);
}
public
string
GetValue
(
string
key
)
{
return
$"Key=
{
key
}
"
;
}
}
#
endregion
}
}
Kivii.Test.WebDriver.csproj
View file @
42609465
...
...
@@ -35,8 +35,8 @@
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference
Include=
"Kivii.WebDriver.V4.7, Version=4.15.2023.110
3
0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
packages\Kivii.WebDriver.4.15.2023.110
3
0\lib\net47\Kivii.WebDriver.V4.7.dll
</HintPath>
<Reference
Include=
"Kivii.WebDriver.V4.7, Version=4.15.2023.110
4
0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
packages\Kivii.WebDriver.4.15.2023.110
4
0\lib\net47\Kivii.WebDriver.V4.7.dll
</HintPath>
</Reference>
<Reference
Include=
"Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<HintPath>
packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll
</HintPath>
...
...
@@ -69,6 +69,7 @@
<Compile
Include=
"Program.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
<Compile
Include=
"Tests\MouseTest.cs"
/>
<Compile
Include=
"Tests\ReferenceTest.cs"
/>
<Compile
Include=
"Tests\WeatherTest.cs"
/>
<EmbeddedResource
Include=
"FrmMain.resx"
>
<DependentUpon>
FrmMain.cs
</DependentUpon>
...
...
Tests/MouseTest.cs
View file @
42609465
...
...
@@ -10,9 +10,9 @@ namespace Kivii.Test.WebDriver.Tests
{
internal
class
MouseTest
{
public
static
W
ebPage
Get
()
public
static
W
indow
Get
()
{
var
rtns
=
new
W
ebPage
(
null
);
var
rtns
=
new
W
indow
(
null
);
//rtns.Url = "https://www.baidu.com";//这个配置可通过NavigateAction进行
...
...
@@ -21,7 +21,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
NavigateAction
();
action
.
Name
=
"跳转网站"
;
action
.
Url
=
"http://www.cacs.mofcom.gov.cn/cacscms/view/notice/zhtbomrasff#"
;
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -30,7 +30,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Pause
;
action
.
DurationMilliseconds
=
2000
;
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -39,7 +39,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Click
;
action
.
Target
=
new
ElementFinder
(
"//*[@id=\"zhtbomrasff\"]"
);
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -48,7 +48,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Pause
;
action
.
DurationMilliseconds
=
2000
;
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -57,7 +57,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Click
;
action
.
Target
=
new
ElementFinder
(
"//*[@id=\"zhtbomrapex\"]"
);
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -66,7 +66,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Pause
;
action
.
DurationMilliseconds
=
2000
;
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -75,7 +75,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Click
;
action
.
Target
=
new
ElementFinder
(
"//*[@id=\"zhtbmg\"]"
);
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -84,7 +84,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Pause
;
action
.
DurationMilliseconds
=
2000
;
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -93,7 +93,7 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Click
;
action
.
Target
=
new
ElementFinder
(
"//*[@id=\"zhtbomrasff\"]"
);
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -101,7 +101,7 @@ namespace Kivii.Test.WebDriver.Tests
{
var
action
=
new
MouseAction
();
action
.
Type
=
MouseActionType
.
Perform
;
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
return
rtns
;
...
...
Tests/ReferenceTest.cs
0 → 100644
View file @
42609465
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
Kivii.Test.WebDriver.Tests
{
/// <summary>
/// 本对象是通过manager.SetReference()的方法注入到Manager中
/// 在Manager的ExecuteScript时,就可以使用到本类的内置方法
/// </summary>
internal
class
ReferenceTest
{
}
}
Tests/WeatherTest.cs
View file @
42609465
...
...
@@ -10,17 +10,17 @@ namespace Kivii.Test.WebDriver.Tests
{
internal
class
WeatherTest
{
public
static
W
ebPage
Get
()
public
static
W
indow
Get
()
{
var
rtns
=
new
W
ebPage
(
null
);
var
rtns
=
new
W
indow
(
null
);
//autoPage.Url = "https://www.baidu.com";//生成DEMO时不需要
#
region
第一步,在输入框内输入内容
{
var
action
=
new
InputAction
();
action
.
Name
=
"输入查询内容"
;
action
.
InputValue
=
"最近天气"
;
action
.
ElementFinder
=
new
ElementFinder
(
"kw"
,
"id"
);
rtns
.
A
ctions
.
Add
(
action
);
action
.
Target
=
new
ElementFinder
(
"kw"
,
"id"
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -28,8 +28,8 @@ namespace Kivii.Test.WebDriver.Tests
{
var
action
=
new
ClickAction
();
action
.
Name
=
"百度一下"
;
action
.
ElementFinder
=
new
ElementFinder
(
"su"
,
"id"
);
rtns
.
A
ctions
.
Add
(
action
);
action
.
Target
=
new
ElementFinder
(
"su"
,
"id"
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -38,9 +38,9 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
OutputAction
();
action
.
Name
=
"取当前城市"
;
//使用XPath
action
.
ElementFinder
=
new
ElementFinder
(
"/html/body/div[3]/div[3]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[1]/div[2]/div[1]/div[1]/div/div[1]"
);
action
.
Target
=
new
ElementFinder
(
"/html/body/div[3]/div[3]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[1]/div[2]/div[1]/div[1]/div/div[1]"
);
action
.
Attributes
.
Add
(
"innerText"
,
"所在城市"
);
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -49,9 +49,9 @@ namespace Kivii.Test.WebDriver.Tests
var
action
=
new
OutputAction
();
action
.
Name
=
"取天气"
;
//使用XPath
action
.
ElementFinder
=
new
ElementFinder
(
".weather-main-temp_6CEpK > span:nth-child(1)"
,
"css"
);
action
.
Target
=
new
ElementFinder
(
".weather-main-temp_6CEpK > span:nth-child(1)"
,
"css"
);
action
.
Attributes
.
Add
(
"innerText"
,
"天气"
);
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
...
...
@@ -61,7 +61,7 @@ namespace Kivii.Test.WebDriver.Tests
action
.
Name
=
"测试JS返回"
;
//使用XPath
action
.
Js
=
"return '测试JS返回';"
;
rtns
.
A
ctions
.
Add
(
action
);
rtns
.
A
ddAction
(
action
);
}
#
endregion
return
rtns
;
...
...
packages.config
View file @
42609465
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"Kivii.WebDriver"
version
=
"4.15.2023.110
3
0"
targetFramework
=
"net472"
/>
<
package
id
=
"Kivii.WebDriver"
version
=
"4.15.2023.110
4
0"
targetFramework
=
"net472"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"13.0.1"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.Support"
version
=
"4.15.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver"
version
=
"4.15.0"
targetFramework
=
"net472"
/>
...
...
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