Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
SeleniumHQ
GitHub Repository: SeleniumHQ/Selenium
Path: blob/trunk/rb/lib/selenium/webdriver/remote/bidi_bridge.rb
1865 views
1
# frozen_string_literal: true
2
3
# Licensed to the Software Freedom Conservancy (SFC) under one
4
# or more contributor license agreements. See the NOTICE file
5
# distributed with this work for additional information
6
# regarding copyright ownership. The SFC licenses this file
7
# to you under the Apache License, Version 2.0 (the
8
# "License"); you may not use this file except in compliance
9
# with the License. You may obtain a copy of the License at
10
#
11
# http://www.apache.org/licenses/LICENSE-2.0
12
#
13
# Unless required by applicable law or agreed to in writing,
14
# software distributed under the License is distributed on an
15
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
# KIND, either express or implied. See the License for the
17
# specific language governing permissions and limitations
18
# under the License.
19
20
module Selenium
21
module WebDriver
22
module Remote
23
class BiDiBridge < Bridge
24
attr_reader :bidi
25
26
def create_session(capabilities)
27
super
28
socket_url = @capabilities[:web_socket_url]
29
@bidi = Selenium::WebDriver::BiDi.new(url: socket_url)
30
end
31
32
def get(url)
33
browsing_context.navigate(url)
34
end
35
36
def go_back
37
browsing_context.traverse_history(-1)
38
end
39
40
def go_forward
41
browsing_context.traverse_history(1)
42
end
43
44
def refresh
45
browsing_context.reload
46
end
47
48
def quit
49
super
50
ensure
51
bidi.close
52
end
53
54
def close
55
execute(:close_window).tap { |handles| bidi.close if handles.empty? }
56
end
57
58
private
59
60
def browsing_context
61
@browsing_context ||= WebDriver::BiDi::BrowsingContext.new(self)
62
end
63
end # BiDiBridge
64
end # Remote
65
end # WebDriver
66
end # Selenium
67
68