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
da5239f4
Commit
da5239f4
authored
Nov 07, 2023
by
施晓雨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新代码测试
parent
da58093e
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
125 additions
and
18 deletions
+125
-18
MyAction.cs
Actions/MyAction.cs
+27
-0
FrmMain.Designer.cs
FrmMain.Designer.cs
+0
-0
FrmMain.cs
FrmMain.cs
+85
-6
Kivii.Test.WebDriver.csproj
Kivii.Test.WebDriver.csproj
+3
-2
packages.config
packages.config
+10
-10
No files found.
Actions/MyAction.cs
0 → 100644
View file @
da5239f4
using
Kivii.WebDriver
;
using
Kivii.WebDriver.Actions
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
Kivii.Test.WebDriver
{
internal
class
MyJsAction
:
ActionBase
{
public
string
Js
{
get
;
set
;
}
public
override
string
Execute
(
Manager
manager
)
{
try
{
var
value
=
manager
.
ExecuteScript
(
Js
);
return
value
;
}
catch
(
Exception
ex
)
{
throw
ex
;
}
}
}
}
FrmMain.Designer.cs
View file @
da5239f4
This diff is collapsed.
Click to expand it.
FrmMain.cs
View file @
da5239f4
using
Kivii.WebDriver
;
using
Kivii.WebDriver
;
using
OpenQA.Selenium
;
using
Kivii.WebDriver.Actions
;
using
OpenQA.Selenium.Firefox
;
using
OpenQA.Selenium.Firefox
;
using
OpenQA.Selenium.Remote
;
using
OpenQA.Selenium.Remote
;
using
OpenQA.Selenium.Support.Events
;
using
OpenQA.Selenium.Support.Events
;
using
System
;
using
System
;
using
System.Threading
;
using
System.Windows.Forms
;
using
System.Windows.Forms
;
namespace
Kivii.Test.WebDriver
namespace
Kivii.Test.WebDriver
...
@@ -21,6 +20,7 @@ namespace Kivii.Test.WebDriver
...
@@ -21,6 +20,7 @@ namespace Kivii.Test.WebDriver
private
void
appendMsg
(
string
msg
)
private
void
appendMsg
(
string
msg
)
{
{
rtbMsg
.
AppendText
(
$"
{
msg
}{
Environment
.
NewLine
}
"
);
rtbMsg
.
AppendText
(
$"
{
msg
}{
Environment
.
NewLine
}
"
);
rtbMsg
.
ScrollToCaret
();
}
}
#
region
事件
#
region
事件
...
@@ -164,8 +164,14 @@ namespace Kivii.Test.WebDriver
...
@@ -164,8 +164,14 @@ namespace Kivii.Test.WebDriver
serviceUrl
=
$"http://driver.
{
cbxBrowserType
.
Text
}
.selenium.kivii.org"
;
serviceUrl
=
$"http://driver.
{
cbxBrowserType
.
Text
}
.selenium.kivii.org"
;
}
}
}
}
_manager
.
Initialize
(
cbxBrowserType
.
Text
,
serviceUrl
);
if
(
_manager
.
Initialize
(
cbxBrowserType
.
Text
,
serviceUrl
))
addListener
();
{
addListener
();
}
else
{
appendMsg
(
"初始化失败,可能是未能成功连接WebDriver驱动!"
);
}
}
}
private
void
btnClose_Click
(
object
sender
,
EventArgs
e
)
private
void
btnClose_Click
(
object
sender
,
EventArgs
e
)
{
{
...
@@ -182,7 +188,7 @@ namespace Kivii.Test.WebDriver
...
@@ -182,7 +188,7 @@ namespace Kivii.Test.WebDriver
_manager
?.
Screenshot
(
sfd
.
FileName
);
_manager
?.
Screenshot
(
sfd
.
FileName
);
}
}
private
void
btn
Injection
Script_Click
(
object
sender
,
EventArgs
e
)
private
void
btn
Load
Script_Click
(
object
sender
,
EventArgs
e
)
{
{
_manager
?.
LoadScript
(
tbxScriptPath
.
Text
);
_manager
?.
LoadScript
(
tbxScriptPath
.
Text
);
}
}
...
@@ -265,7 +271,6 @@ namespace Kivii.Test.WebDriver
...
@@ -265,7 +271,6 @@ namespace Kivii.Test.WebDriver
{
{
rtbEngineScript
.
AppendText
(
$"
{
cbScriptTip
.
Text
}{
Environment
.
NewLine
}
"
);
rtbEngineScript
.
AppendText
(
$"
{
cbScriptTip
.
Text
}{
Environment
.
NewLine
}
"
);
}
}
#
endregion
...
@@ -287,5 +292,79 @@ namespace Kivii.Test.WebDriver
...
@@ -287,5 +292,79 @@ namespace Kivii.Test.WebDriver
}
}
driver
.
Quit
();
driver
.
Quit
();
}
}
private
void
btnInjection_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
)}
(\"内容\")"
);
}
#
endregion
private
void
btnTestBaidu_Click_1
(
object
sender
,
EventArgs
e
)
{
if
(
_manager
==
null
)
return
;
_manager
.
Maximize
();
//最大化网页
var
baidu
=
new
WebPage
(
_manager
);
baidu
.
Url
=
"https://www.baidu.com"
;
#
region
第一步,在输入框内输入内容
var
inputAction
=
new
InputAction
();
inputAction
.
Name
=
"输入查询内容"
;
inputAction
.
InputValue
=
"最近天气"
;
inputAction
.
ElementFinder
=
new
ElementFinder
(
"kw"
,
"id"
);
baidu
.
Actions
.
Add
(
inputAction
);
#
endregion
#
region
第二步点击百度一下查询按键
var
clickAction
=
new
ClickAction
();
clickAction
.
Name
=
"百度一下"
;
clickAction
.
ElementFinder
=
new
ElementFinder
(
"su"
,
"id"
);
baidu
.
Actions
.
Add
(
clickAction
);
#
endregion
#
region
第三步从界面上取一些值
var
outputAction
=
new
OutputAction
();
outputAction
.
Name
=
"取当前城市"
;
//使用XPath
outputAction
.
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]"
);
outputAction
.
Attributes
.
Add
(
"innerText"
,
"所在城市"
);
baidu
.
Actions
.
Add
(
outputAction
);
#
endregion
#
region
第四步从界面上取天气
var
outputAction2
=
new
OutputAction
();
outputAction2
.
Name
=
"取天气"
;
//使用XPath
outputAction2
.
ElementFinder
=
new
ElementFinder
(
".weather-main-temp_6CEpK > span:nth-child(1)"
,
"css"
);
outputAction2
.
Attributes
.
Add
(
"innerText"
,
"天气"
);
baidu
.
Actions
.
Add
(
outputAction2
);
#
endregion
#
region
第五步:测试下本地
Action
var
jsAction
=
new
MyJsAction
();
jsAction
.
Name
=
"测试JS返回"
;
//使用XPath
jsAction
.
Js
=
"return '测试JS返回';"
;
baidu
.
Actions
.
Add
(
jsAction
);
#
endregion
var
result
=
baidu
.
Execute
();
appendMsg
(
$"执行结果:
{
Environment
.
NewLine
}{
result
}
"
);
}
}
#
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 @
da5239f4
...
@@ -35,8 +35,8 @@
...
@@ -35,8 +35,8 @@
<WarningLevel>
4
</WarningLevel>
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<Reference
Include=
"Kivii.WebDriver.V4.7, Version=4.15.2023.110
0
0, Culture=neutral, processorArchitecture=MSIL"
>
<Reference
Include=
"Kivii.WebDriver.V4.7, Version=4.15.2023.110
1
0, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
packages\Kivii.WebDriver.4.15.2023.110
0
0\lib\net47\Kivii.WebDriver.V4.7.dll
</HintPath>
<HintPath>
packages\Kivii.WebDriver.4.15.2023.110
1
0\lib\net47\Kivii.WebDriver.V4.7.dll
</HintPath>
</Reference>
</Reference>
<Reference
Include=
"Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<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>
<HintPath>
packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll
</HintPath>
...
@@ -59,6 +59,7 @@
...
@@ -59,6 +59,7 @@
</Reference>
</Reference>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<Compile
Include=
"Actions\MyAction.cs"
/>
<Compile
Include=
"FrmMain.cs"
>
<Compile
Include=
"FrmMain.cs"
>
<SubType>
Form
</SubType>
<SubType>
Form
</SubType>
</Compile>
</Compile>
...
...
packages.config
View file @
da5239f4
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
packages
>
<
package
id
=
"Kivii.WebDriver"
version
=
"4.15.2023.11000"
targetFramework
=
"net472"
/>
<
package
id
=
"Kivii.WebDriver"
version
=
"4.15.2023.11010"
targetFramework
=
"net472"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"13.0.1"
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.Support"
version
=
"4.15.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver"
version
=
"4.15.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver"
version
=
"4.15.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Drawing.Common"
version
=
"7.0.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver.ChromeDriver"
version
=
"119.0.6045.10500"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver.ChromeDriver"
version
=
"119.0.6045.10500"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver.GeckoDriver.Win64"
version
=
"0.33.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver.GeckoDriver.Win64"
version
=
"0.33.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver.IEDriver"
version
=
"4.14.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver.IEDriver"
version
=
"4.14.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver.MSEdgeDriver"
version
=
"118.0.2088.41"
targetFramework
=
"net472"
/>
<
package
id
=
"Selenium.WebDriver.MSEdgeDriver"
version
=
"118.0.2088.41"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Drawing.Common"
version
=
"7.0.0"
targetFramework
=
"net472"
/>
</
packages
>
</
packages
>
\ No newline at end of file
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