forked from florentbr/SeleniumBasic
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOperaDriver.cs
More file actions
107 lines (89 loc) · 2.97 KB
/
OperaDriver.cs
File metadata and controls
107 lines (89 loc) · 2.97 KB
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
using Selenium.Core;
using Selenium.Internal;
using System;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
namespace Selenium {
/// <summary>
/// Web driver for Opera
/// </summary>
///
/// <example>
///
/// VBScript:
/// <code lang="vbs">
/// Class Script
/// Dim driver
///
/// Sub Class_Initialize
/// Set driver = CreateObject("Selenium.OperaDriver")
/// driver.Get "http://www.google.com"
/// End Sub
///
/// Sub Class_Terminate
/// driver.Quit
/// End Sub
/// End Class
///
/// Set s = New Script
/// </code>
///
/// VBA:
/// <code lang="vbs">
/// Public Sub Script()
/// Dim driver As New OperaDriver
/// driver.Get "http://www.google.com"
/// ...
/// driver.Quit
/// End Sub
/// </code>
///
/// </example>
[ProgId("Selenium.OperaDriver")]
[Guid("0277FC34-FD1B-4616-BB19-9E7F9EF1D002")]
[ComVisible(true), ClassInterface(ClassInterfaceType.None)]
public class OperaDriver : WebDriver, ComInterfaces._WebDriver {
const string BROWSER_NAME = "opera";
public OperaDriver()
: base(BROWSER_NAME) { }
internal static IDriverService StartService(WebDriver wd) {
ExtendCapabilities(wd, false);
var svc = new DriverService();
svc.AddArgument("--port=" + svc.IPEndPoint.Port.ToString());
svc.AddArgument("--silent");
svc.Start("operadriver.exe");
return svc;
}
internal static void ExtendCapabilities(WebDriver wd, bool remote) {
var capa = wd.Capabilities;
Dictionary opts;
if (!capa.TryGetValue("operaOptions", out opts))
capa["operaOptions"] = opts = new Dictionary();
capa.TryMove("debuggerAddress", opts);
if (wd.Profile != null)
wd.Arguments.Add("user-data-dir=" + ExpandProfile(wd.Profile, remote));
if (wd.Arguments.Count != 0)
opts["args"] = wd.Arguments;
if (wd.Extensions.Count != 0)
opts["extensions"] = wd.Extensions;
if (wd.Preferences.Count != 0)
opts["prefs"] = wd.Preferences;
if (wd.Binary != null)
opts["binary"] = wd.Binary;
capa.SetDefault("download.directory_upgrade", true);
capa.SetDefault("download.prompt_for_download", false);
}
private static string ExpandProfile(string profile, bool remote) {
if (!remote) {
if (IOExt.IsPath(profile)) {
profile = IOExt.ExpandPath(profile);
} else {
profile = IOExt.AppDataFolder + @"\Opera Software\Opera\Profiles\" + profile;
}
Directory.CreateDirectory(profile);
}
return profile;
}
}
}