-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathSeleniumTest.bas
122 lines (104 loc) · 6.11 KB
/
SeleniumTest.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Attribute VB_Name = "SeleniumTest"
Sub test()
Dim e As SeleniumElement
If Null <> "xx" Then MsgBox 999
If Not Null = "xx" Then MsgBox 999
'Start Selenium
Dim WebDriver As New SeleniumDriver
' WebDriver.Setup "C:\Users\sdkn1\Desktop\Selenium\chromedriver_win32\chromedriver.exe"
WebDriver.Setup driverPath:="C:\Users\sdkn1\Desktop\Selenium\chromedriver_win32\chromedriver.exe", _
desiredCapabilitiesOption:="""chromeOptions"":{""args"":[""user-data-dir=C:/Users/sdkn1/Desktop/Selenium/chromeProfile""]}"
'WebDriver.Setup "C:\Users\sdkn1\Desktop\Selenium\geckodriver-v0.18.0-win64\geckodriver.exe", "firefox"
Application.Wait Now + TimeValue("00:00:02")
'Get HTML Page
WebDriver.GetUrl "http://htmlpreview.github.io/?https://github.com/sdkn104/VBA-Selenium/blob/master/test/testData.htm"
'WebDriver.GetUrl "file://C:/Users/sdkn1/Desktop/testData.htm"
Application.Wait Now + TimeValue("00:00:02")
'Status
If Not WebDriver.Status Then Err.Raise 20001
'Driver: Find Element
If WebDriver.FindElement("xpath", "//span").TagName <> "span" Then Err.Raise 20020
If WebDriver.FindElementById("id_text").TagName <> "input" Then Err.Raise 20021
If WebDriver.FindElementByName("input").TagName <> "input" Then Err.Raise 20022
If WebDriver.FindElementByClassName("c_text").TagName <> "input" Then Err.Raise 20023
If WebDriver.FindElementByTagName("span").TagName <> "span" Then Err.Raise 20024
If WebDriver.FindElementByXpath("//span").TagName <> "span" Then Err.Raise 20025
'Element: Find Element, GetAttribute, TagName
Set e = WebDriver.FindElement("xpath", "/html/body")
If e.FindElement("xpath", "//span").TagName <> "span" Then Err.Raise 20020
If e.FindElementById("id_text").TagName <> "input" Then Err.Raise 20021
If e.FindElementByName("input").TagName <> "input" Then Err.Raise 20022
If e.FindElementByClassName("c_text").TagName <> "input" Then Err.Raise 20023
If e.FindElementByTagName("span").TagName <> "span" Then Err.Raise 20024
If e.FindElementByXpath("//span").TagName <> "span" Then Err.Raise 20025
If Not IsNull(e.FindElementByXpath("//span").GetAttribute("xxxxx")) Then Err.Raise 20026
If IsNull(e.FindElementByXpath("//span").GetAttribute("id")) Then Err.Raise 20027
If e.FindElementByXpath("//span").GetAttribute("id") <> "id_span" Then Err.Raise 20027
'Driver: Find Elements
arr = WebDriver.FindElements("xpath", "//input")
If UBound(arr) - LBound(arr) + 1 <> 3 Then Err.Raise 20031
For Each v In arr
If Not v.GetAttribute("class") Like "c_*" Then Err.Raise 20032
Next
'Element: Find Elements
arr = WebDriver.FindElementByTagName("body").FindElements("xpath", ".//input")
If UBound(arr) - LBound(arr) + 1 <> 3 Then Err.Raise 20035
For Each v In arr
If Not v.GetAttribute("class") Like "c_*" Then Err.Raise 20036
Next
arr = WebDriver.FindElementByTagName("body").FindElements("xpath", ".//xxxxx")
If UBound(arr) >= LBound(arr) Then Err.Raise 20037
'Send keys, Clear
WebDriver.FindElementById("id_text").SendKeys "abc"
Debug.Print WebDriver.FindElementById("id_text").GetAttribute("value")
Debug.Print WebDriver.PageSource
If WebDriver.FindElementById("id_text").GetAttribute("value") <> "abc" Then Err.Raise 20041
Set e = WebDriver.FindElementByTagName("form")
e.FindElementById("id_text").SendKeys "def"
If e.FindElementById("id_text").GetAttribute("value") <> "abcdef" Then Err.Raise 20042
e.FindElementById("id_text").Clear
If e.FindElementById("id_text").GetAttribute("value") <> "" Then Err.Raise 20043
'Click, Submit
WebDriver.FindElementById("id_button").Click
If WebDriver.FindElementById("id_text").GetAttribute("value") <> "999" Then Err.Raise 20051
WebDriver.FindElementById("id_submit").Submit
If WebDriver.FindElementById("id_text").GetAttribute("value") <> "111" Then Err.Raise 20052
'ToArray
tbls = WebDriver.FindElements("xpath", ".//table")
arr = tbls(1).ToArray
If arr(1, 1) <> "Firstname" Then Err.Raise 20061
If Not IsNull(arr(2, 3)) Then Err.Raise 20062
If arr(3, 4) <> "extra memo" Then Err.Raise 20063
'PageSource
If Left(WebDriver.PageSource, 15) <> "<!DOCTYPE html>" Then Err.Raise 20071
'Text
If WebDriver.FindElement("xpath", "/html/body/span").Text <> "button2" Then Err.Raise 20072
'responseText, responseStatus
s = WebDriver.Status
If Left(WebDriver.responseText, 1) <> "{" Then Err.Raise 20073
If WebDriver.responseStatus <> 200 Then Err.Raise 20074
'Error Case
On Error GoTo OnError
ExpErrNumber = 10007
Call WebDriver.FindElement("xpath", "//xxxxxx")
ExpErrNumber = 10013
Call WebDriver.FindElement("xxxx", "id_text")
GoTo EndOnError
OnError:
ErrNumber = Err.Number
On Error GoTo 0
If ErrNumber <> ExpErrNumber Then Err.Raise 20075, "", "ErrNumber:" & ErrNumber & ", expected:" & ExpErrNumber
On Error GoTo OnError
Resume Next
EndOnError:
Err.Description = ""
'WebDriver.getValueByKey
If WebDriver.getValueByKey("{""k"":0,{""name"":""value"",""kk"":0}}", "name") <> "value" Then Err.Raise 20081 'String
If Not IsNull(WebDriver.getValueByKey("{""k"":0,{""name"":null,""kk"":0}}", "name")) Then Err.Raise 20082 'Null
If WebDriver.getValueByKey("{""k"":0,{""name"":999,""kk"":0}}", "name") <> 999 Then Err.Raise 20083 'number
If WebDriver.getValueByKey("{""k"":0,{ ""name"" : 999 ,""kk"":0}}", "name") <> 999 Then Err.Raise 20084 'with space
If WebDriver.getValueByKey("{""k"":0,{ ""name""" & vbTab & vbCrLf & ":" & vbTab & vbCrLf & "999" & vbTab & vbCrLf & ",""kk"":0}}", "name") <> 999 Then Err.Raise 20085 'with tab, cr, if
'WebDriver.JsonGetValueByKey
If WebDriver.JsonGetValueByKey("{""k"":0, ""name"" : 999 ,""kk"":0}", "name") <> 999 Then Err.Raise 20085
If WebDriver.JsonGetValueByKey("{""k"":0, ""name"" : ""abc\t\r\ndef"" ,""kk"":0}", "name") <> "abc" & vbTab & vbCrLf & "def" Then Err.Raise 20086
End Sub