Skip to content

Commit b29e45b

Browse files
authored
Add examples for using Service classes (#1392)
update documentation for Service classes [deploy site]
1 parent 66160a1 commit b29e45b

File tree

4 files changed

+464
-188
lines changed

4 files changed

+464
-188
lines changed

Diff for: website_and_docs/content/documentation/webdriver/drivers/service.en.md

+116-47
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,24 @@ to the command line. Most of the useful arguments are related to logging.
1616

1717
To start a driver with a default service instance:
1818

19-
{{< tabpane langEqualsHeader=true >}}
19+
{{< tabpane text=true langEqualsHeader=true >}}
2020
{{< tab header="Java" >}}
21-
ChromeDriverService service = new ChromeDriverService.Builder().build();
22-
WebDriver driver = new ChromeDriver(service);
21+
{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/drivers/ServiceTest.java#L28-L29" >}}
2322
{{< /tab >}}
2423
{{< tab header="Python" >}}
25-
from selenium.webdriver.chrome.service import Service
26-
from selenium import webdriver
27-
28-
service = Service()
29-
driver = webdriver.Chrome(service=service)
24+
{{< gh-codeblock path="examples/python/tests/drivers/test_service.py#L9-L10" >}}
3025
{{< /tab >}}
3126
{{< tab header="CSharp" >}}
27+
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Drivers/ServiceTest.cs#L17-L18" >}}
3228
{{< /tab >}}
3329
{{< tab header="Ruby" >}}
34-
service = Selenium::WebDriver::Service.chrome
35-
driver = Selenium::WebDriver.for :chrome, service: service
30+
{{< gh-codeblock path="examples/ruby/spec/drivers/service_spec.rb#L12-L13" >}}
3631
{{< /tab >}}
3732
{{< tab header="JavaScript" >}}
33+
{{< badge-code >}}
3834
{{< /tab >}}
3935
{{< tab header="Kotlin" >}}
36+
{{< badge-code >}}
4037
{{< /tab >}}
4138
{{< /tabpane >}}
4239

@@ -45,61 +42,133 @@ driver = Selenium::WebDriver.for :chrome, service: service
4542
**Note:** If you are using Selenium 4.6 or greater, you shouldn't need to set a driver location.
4643
If you can not update Selenium or have an advanced use case here is how to specify the driver location:
4744

48-
{{< tabpane langEqualsHeader=true >}}
49-
{{% tab header="Java" text=true %}}
50-
In Java you can also set the driver location with a System Property:
51-
```java
52-
System.setProperty("webdriver.chrome.driver", driver_location);
53-
```
54-
55-
Otherwise:
56-
```java
57-
ChromeDriverService service = new ChromeDriverService.Builder()
58-
.usingDriverExecutable(driverLocation)
59-
.build();
60-
61-
ChromeDriver driver = new ChromeDriver(service);
62-
```
63-
{{% /tab %}}
64-
45+
{{< tabpane text=true langEqualsHeader=true >}}
46+
{{< tab header="Java" >}}
47+
{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/drivers/ServiceTest.java#L34-L36" >}}
48+
{{< /tab >}}
6549
{{< tab header="Python" >}}
66-
from selenium.webdriver.chrome.service import Service
67-
from selenium import webdriver
68-
69-
service = Service(executable_path=driver_location)
70-
driver = webdriver.Chrome(service=service)
50+
{{< gh-codeblock path="examples/python/tests/drivers/test_service.py#L16" >}}
7151
{{< /tab >}}
7252
{{< tab header="CSharp" >}}
73-
var driver = new ChromeDriver(driverLocation);
53+
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Drivers/ServiceTest.cs#L25" >}}
7454
{{< /tab >}}
7555
{{< tab header="Ruby" >}}
76-
service = Selenium::WebDriver::Service.chrome(path: driver_location)
77-
driver = Selenium::WebDriver.for :chrome, service: service
56+
{{< gh-codeblock path="examples/ruby/spec/drivers/service_spec.rb#L18" >}}
7857
{{< /tab >}}
7958
{{< tab header="JavaScript" >}}
80-
const {Builder} = require('selenium-webdriver');
81-
const chrome = require('selenium-webdriver/chrome');
82-
83-
const service = new chrome.ServiceBuilder(driverLocation);
84-
const driver = new Builder().forBrowser('chrome').setChromeService(service).build();
59+
{{< badge-code >}}
8560
{{< /tab >}}
8661
{{< tab header="Kotlin" >}}
87-
import org.openqa.selenium.chrome.ChromeDriver
88-
89-
fun main(args: Array<String>) {
90-
System.setProperty("webdriver.chrome.driver", driverLocation)
91-
val driver = ChromeDriver()
92-
}
62+
{{< badge-code >}}
9363
{{< /tab >}}
9464
{{< /tabpane >}}
9565

9666
## Driver port
9767

68+
If you want the driver to run on a specific port, you may specify it as follows:
69+
70+
{{< tabpane text=true langEqualsHeader=true >}}
71+
{{< tab header="Java" >}}
72+
{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/drivers/ServiceTest.java#L43-L45" >}}
73+
{{< /tab >}}
74+
{{< tab header="Python" >}}
75+
{{< gh-codeblock path="examples/python/tests/drivers/test_service.py#L24" >}}
76+
{{< /tab >}}
77+
{{< tab header="CSharp" >}}
78+
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Drivers/ServiceTest.cs#L35" >}}
79+
{{< /tab >}}
80+
{{< tab header="Ruby" >}}
81+
{{< gh-codeblock path="examples/ruby/spec/drivers/service_spec.rb#L25" >}}
82+
{{< /tab >}}
83+
{{< tab header="JavaScript" >}}
84+
{{< badge-code >}}
85+
{{< /tab >}}
86+
{{< tab header="Kotlin" >}}
87+
{{< badge-code >}}
88+
{{< /tab >}}
89+
{{< /tabpane >}}
9890

9991
## Setting log output
10092

93+
Getting driver logs can be helpful for debugging various issues. The Service class lets you
94+
direct where the logs will go
10195

102-
### Console output
96+
Currently, the default behavior for logging varies by language (and sometimes browser):
10397

98+
{{< tabpane text=true langEqualsHeader=true >}}
99+
{{% tab header="Java" %}}
100+
Logging output defaults to STDERR
101+
{{% /tab %}}
102+
{{% tab header="Python" %}}
103+
Logging output defaults to none, except for Firefox, which defaults to "geckodriver.log"
104+
{{% /tab %}}
105+
{{% tab header="CSharp" %}}
106+
Logging output defaults to none
107+
{{% /tab %}}
108+
{{% tab header="Ruby" %}}
109+
Logging output defaults to none, unless the WebDriver logger level is set to `:debug`,
110+
in which case the driver logging is sent to the same output as the Selenium logging.
111+
{{% /tab %}}
112+
{{% tab header="JavaScript" %}}
113+
{{% /tab %}}
114+
{{% tab header="Kotlin" %}}
115+
Logging output defaults to STDERR
116+
{{% /tab %}}
117+
{{< /tabpane >}}
104118

105119
### File output
120+
121+
To change the logging output to save to a specific file:
122+
123+
{{< tabpane text=true langEqualsHeader=true >}}
124+
{{< tab header="Java" >}}
125+
Java allows you to set this by method:
126+
{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/drivers/ServiceTest.java#L52-L54" >}}
127+
Or by System Property:
128+
{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/drivers/ServiceTest.java#L61-L62" >}}
129+
{{< /tab >}}
130+
{{< tab header="Python" >}}
131+
{{< gh-codeblock path="examples/python/tests/drivers/test_service.py#L33" >}}
132+
{{< /tab >}}
133+
{{< tab header="CSharp" >}}
134+
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Drivers/ServiceTest.cs#L46" >}}
135+
{{< /tab >}}
136+
{{< tab header="Ruby" >}}
137+
{{< gh-codeblock path="examples/ruby/spec/drivers/service_spec.rb#L32" >}}
138+
{{< /tab >}}
139+
{{< tab header="JavaScript" >}}
140+
{{< badge-code >}}
141+
{{< /tab >}}
142+
{{< tab header="Kotlin" >}}
143+
{{< badge-code >}}
144+
{{< /tab >}}
145+
{{< /tabpane >}}
146+
147+
### Console output
148+
149+
To change the logging output to display in the console as STDOUT:
150+
151+
{{< tabpane text=true langEqualsHeader=true >}}
152+
{{% tab header="Java" %}}
153+
Java allows you to set this by method:
154+
{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/drivers/ServiceTest.java#L69-L71" >}}
155+
Or by System Property:
156+
{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/drivers/ServiceTest.java#L78-L79" >}}
157+
{{% /tab %}}
158+
{{% tab header="Python" %}}
159+
This is not yet supported in Python
160+
{{% /tab %}}
161+
{{% tab header="CSharp" %}}
162+
This is not yet supported in .NET
163+
{{% /tab %}}
164+
{{< tab header="Ruby" >}}
165+
{{< gh-codeblock path="examples/ruby/spec/drivers/service_spec.rb#L41" >}}
166+
{{< /tab >}}
167+
{{< tab header="JavaScript" >}}
168+
{{< badge-code >}}
169+
{{< /tab >}}
170+
{{< tab header="Kotlin" >}}
171+
{{< badge-code >}}
172+
{{< /tab >}}
173+
{{< /tabpane >}}
174+

0 commit comments

Comments
 (0)