Skip to content

Commit 2a47339

Browse files
authored
Merge branch 'trunk' into java_cookie
2 parents 784652a + e60ce06 commit 2a47339

File tree

10 files changed

+52
-53
lines changed

10 files changed

+52
-53
lines changed

java/test/org/openqa/selenium/bidi/BiDiSessionCleanUpTest.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
2121
import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
2222

23-
import java.util.Collections;
2423
import org.junit.jupiter.api.Test;
2524
import org.openqa.selenium.WebDriverException;
2625
import org.openqa.selenium.WindowType;
@@ -42,8 +41,7 @@ void shouldNotCloseBiDiSessionIfOneWindowIsClosed() {
4241

4342
BiDi biDi = driver.getBiDi();
4443

45-
BiDiSessionStatus status =
46-
biDi.send(new Command<>("session.status", Collections.emptyMap(), BiDiSessionStatus.class));
44+
BiDiSessionStatus status = biDi.getBidiSessionStatus();
4745
assertThat(status).isNotNull();
4846
assertThat(status.getMessage()).isEqualTo("Session already started");
4947

@@ -53,8 +51,7 @@ void shouldNotCloseBiDiSessionIfOneWindowIsClosed() {
5351

5452
driver.close();
5553

56-
BiDiSessionStatus statusAfterClosing =
57-
biDi.send(new Command<>("session.status", Collections.emptyMap(), BiDiSessionStatus.class));
54+
BiDiSessionStatus statusAfterClosing = biDi.getBidiSessionStatus();
5855
assertThat(statusAfterClosing).isNotNull();
5956
assertThat(status.getMessage()).isEqualTo("Session already started");
6057
driver.quit();
@@ -70,19 +67,14 @@ void shouldCloseBiDiSessionIfLastWindowIsClosed() {
7067

7168
BiDi biDi = driver.getBiDi();
7269

73-
BiDiSessionStatus status =
74-
biDi.send(new Command<>("session.status", Collections.emptyMap(), BiDiSessionStatus.class));
70+
BiDiSessionStatus status = biDi.getBidiSessionStatus();
7571
assertThat(status).isNotNull();
7672
assertThat(status.getMessage()).isEqualTo("Session already started");
7773

7874
driver.close();
7975

8076
// Closing the last top-level browsing context, closes the WebDriver and BiDi session
8177
assertThatExceptionOfType(WebDriverException.class)
82-
.isThrownBy(
83-
() ->
84-
biDi.send(
85-
new Command<>(
86-
"session.status", Collections.emptyMap(), BiDiSessionStatus.class)));
78+
.isThrownBy(() -> biDi.getBidiSessionStatus());
8779
}
8880
}

java/test/org/openqa/selenium/bidi/BiDiSessionTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
2121

22-
import java.util.Collections;
2322
import org.junit.jupiter.api.Test;
2423
import org.openqa.selenium.testing.JupiterTestBase;
2524

@@ -29,8 +28,7 @@ class BiDiSessionTest extends JupiterTestBase {
2928
void shouldBeAbleToCreateABiDiSession() {
3029
BiDi biDi = ((HasBiDi) driver).getBiDi();
3130

32-
BiDiSessionStatus status =
33-
biDi.send(new Command<>("session.status", Collections.emptyMap(), BiDiSessionStatus.class));
31+
BiDiSessionStatus status = biDi.getBidiSessionStatus();
3432
assertThat(status).isNotNull();
3533
assertThat(status.getMessage()).isNotEmpty();
3634
}

java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import static org.openqa.selenium.testing.drivers.Browser.*;
2222

2323
import java.io.StringReader;
24-
import java.util.Collections;
2524
import java.util.Objects;
2625
import java.util.concurrent.CompletableFuture;
2726
import java.util.concurrent.ExecutionException;
@@ -37,7 +36,6 @@
3736
import org.openqa.selenium.WindowType;
3837
import org.openqa.selenium.bidi.BiDi;
3938
import org.openqa.selenium.bidi.BiDiSessionStatus;
40-
import org.openqa.selenium.bidi.Command;
4139
import org.openqa.selenium.bidi.HasBiDi;
4240
import org.openqa.selenium.bidi.browsingcontext.BrowsingContext;
4341
import org.openqa.selenium.bidi.browsingcontext.NavigationResult;
@@ -89,9 +87,7 @@ void setup() {
8987
@NotYetImplemented(EDGE)
9088
void ensureBiDiSessionCreation() {
9189
try (BiDi biDi = ((HasBiDi) driver).getBiDi()) {
92-
BiDiSessionStatus status =
93-
biDi.send(
94-
new Command<>("session.status", Collections.emptyMap(), BiDiSessionStatus.class));
90+
BiDiSessionStatus status = biDi.getBidiSessionStatus();
9591
assertThat(status).isNotNull();
9692
assertThat(status.getMessage()).isNotEmpty();
9793
}

py/selenium/webdriver/common/log.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ async def mutation_events(self) -> AsyncGenerator[Dict[str, Any], None]:
9090
yield event
9191

9292
payload = json.loads(evnt.value.payload)
93-
elements: list = self.driver.find_elements(By.CSS_SELECTOR, f"*[data-__webdriver_id={payload['target']}]")
93+
elements: list = self.driver.find_elements(By.CSS_SELECTOR, f"*[data-__webdriver_id=\"{payload['target']}\"]")
9494
if not elements:
9595
elements.append(None)
9696
event["element"] = elements[0]

rb/spec/integration/selenium/webdriver/action_builder_spec.rb

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ module WebDriver
4444
input = driver.find_element(css: '#working')
4545

4646
driver.action.send_keys(input, 'abcd').perform
47-
wait.until { input.attribute(:value).length == 4 }
48-
expect(input.attribute(:value)).to eq('abcd')
47+
wait.until { input.property(:value).length == 4 }
48+
expect(input.property(:value)).to eq('abcd')
4949
end
5050

5151
it 'sends keys with multiple arguments' do
@@ -55,8 +55,8 @@ module WebDriver
5555
input.click
5656

5757
driver.action.send_keys('abcd', 'dcba').perform
58-
wait.until { input.attribute(:value).length == 8 }
59-
expect(input.attribute(:value)).to eq('abcddcba')
58+
wait.until { input.property(:value).length == 8 }
59+
expect(input.property(:value)).to eq('abcddcba')
6060
end
6161

6262
it 'sends non-ASCII keys' do
@@ -66,8 +66,8 @@ module WebDriver
6666
input.click
6767

6868
driver.action.send_keys('abcd', :left, 'a').perform
69-
wait.until { input.attribute(:value).length == 5 }
70-
expect(input.attribute(:value)).to eq('abcad')
69+
wait.until { input.property(:value).length == 5 }
70+
expect(input.property(:value)).to eq('abcad')
7171
end
7272
end
7373

@@ -81,9 +81,9 @@ module WebDriver
8181
event_input.click
8282

8383
driver.action.key_down(:shift).send_keys('ab').key_up(:shift).perform
84-
wait.until { event_input.attribute(:value).length == 2 }
84+
wait.until { event_input.property(:value).length == 2 }
8585

86-
expect(event_input.attribute(:value)).to eq('AB')
86+
expect(event_input.property(:value)).to eq('AB')
8787
expected = keylogger.text.strip
8888
expect(expected).to match(/^(focus )?keydown keydown keypress keyup keydown keypress keyup keyup$/)
8989
end
@@ -131,10 +131,10 @@ module WebDriver
131131
event_input = driver.find_element(id: 'clickField')
132132

133133
driver.action.click_and_hold(event_input).perform
134-
expect(event_input.attribute(:value)).to eq('Hello')
134+
expect(event_input.property(:value)).to eq('Hello')
135135

136136
driver.action.release_actions
137-
expect(event_input.attribute(:value)).to eq('Clicked')
137+
expect(event_input.property(:value)).to eq('Clicked')
138138
end
139139
end
140140

@@ -143,24 +143,27 @@ module WebDriver
143143
driver.navigate.to url_for('javascriptPage.html')
144144
element = driver.find_element(id: 'clickField')
145145
driver.action.click(element).perform
146-
expect(element.attribute(:value)).to eq('Clicked')
146+
expect(element.property(:value)).to eq('Clicked')
147147
end
148148

149149
it 'executes with equivalent pointer methods' do
150150
driver.navigate.to url_for('javascriptPage.html')
151151
element = driver.find_element(id: 'clickField')
152152
driver.action.move_to(element).pointer_down(:left).pointer_up(:left).perform
153-
expect(element.attribute(:value)).to eq('Clicked')
153+
expect(element.property(:value)).to eq('Clicked')
154154
end
155155
end
156156

157157
describe '#double_click' do
158+
# https://issues.chromium.org/issues/400087471
159+
before { reset_driver! if GlobalTestEnv.rbe? && GlobalTestEnv.browser == :chrome }
160+
158161
it 'presses pointer twice', except: {browser: %i[safari safari_preview]} do
159162
driver.navigate.to url_for('javascriptPage.html')
160163
element = driver.find_element(id: 'doubleClickField')
161164

162165
driver.action.double_click(element).perform
163-
expect(element.attribute(:value)).to eq('DoubleClicked')
166+
expect(element.property(:value)).to eq('DoubleClicked')
164167
end
165168

166169
it 'executes with equivalent pointer methods', except: {browser: %i[safari safari_preview]} do
@@ -171,7 +174,7 @@ module WebDriver
171174
.pointer_down(:left).pointer_up(:left)
172175
.pointer_down(:left).pointer_up(:left)
173176
.perform
174-
expect(element.attribute(:value)).to eq('DoubleClicked')
177+
expect(element.property(:value)).to eq('DoubleClicked')
175178
end
176179
end
177180

@@ -181,15 +184,15 @@ module WebDriver
181184
element = driver.find_element(id: 'doubleClickField')
182185

183186
driver.action.context_click(element).perform
184-
expect(element.attribute(:value)).to eq('ContextClicked')
187+
expect(element.property(:value)).to eq('ContextClicked')
185188
end
186189

187190
it 'executes with equivalent pointer methods' do
188191
driver.navigate.to url_for('javascriptPage.html')
189192
element = driver.find_element(id: 'doubleClickField')
190193

191194
driver.action.move_to(element).pointer_down(:right).pointer_up(:right).perform
192-
expect(element.attribute(:value)).to eq('ContextClicked')
195+
expect(element.property(:value)).to eq('ContextClicked')
193196
end
194197
end
195198

@@ -199,7 +202,7 @@ module WebDriver
199202
element = driver.find_element(id: 'clickField')
200203
driver.action.move_to(element).click.perform
201204

202-
expect(element.attribute(:value)).to eq('Clicked')
205+
expect(element.property(:value)).to eq('Clicked')
203206
end
204207

205208
it 'moves to element with offset' do
@@ -212,7 +215,7 @@ module WebDriver
212215
y_offset = (destination_rect.y - origin_rect.y).ceil
213216

214217
driver.action.move_to(origin, x_offset, y_offset).click.perform
215-
expect(destination.attribute(:value)).to eq('Clicked')
218+
expect(destination.property(:value)).to eq('Clicked')
216219
end
217220
end
218221

@@ -256,7 +259,7 @@ module WebDriver
256259
rect = element.rect
257260
driver.action.move_to_location(rect.x.ceil, rect.y.ceil).click.perform
258261

259-
expect(element.attribute(:value)).to eq('Clicked')
262+
expect(element.property(:value)).to eq('Clicked')
260263
end
261264
end
262265

rb/spec/integration/selenium/webdriver/driver_spec.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@
2222
module Selenium
2323
module WebDriver
2424
describe Driver, exclusive: {bidi: false, reason: 'Not yet implemented with BiDi'} do
25+
after { reset_driver! if GlobalTestEnv.rbe? && GlobalTestEnv.browser == :chrome }
26+
2527
it_behaves_like 'driver that can be started concurrently', exclude: [
2628
{browser: %i[safari safari_preview]},
27-
{browser: :firefox, rbe: true, reason: 'https://github.com/mozilla/geckodriver/issues/2219'},
29+
{browser: :firefox, reason: 'https://github.com/SeleniumHQ/selenium/issues/15451'},
2830
{driver: :remote, rbe: true, reason: 'Cannot start 2+ drivers at once.'}
2931
]
3032

@@ -60,8 +62,7 @@ module WebDriver
6062

6163
it 'refreshes the page' do
6264
driver.navigate.to url_for('javascriptPage.html')
63-
sleep 1 # javascript takes too long to load
64-
driver.find_element(id: 'updatediv').click
65+
short_wait { driver.find_element(id: 'updatediv') }.click
6566
expect(driver.find_element(id: 'dynamo').text).to eq('Fish and chips!')
6667
driver.navigate.refresh
6768
wait_for_element(id: 'dynamo')

rb/spec/integration/selenium/webdriver/manager_spec.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ module WebDriver
2525
describe 'cookie management' do
2626
before { driver.navigate.to url_for('xhtmlTest.html') }
2727

28-
after { driver.manage.delete_all_cookies }
28+
after do
29+
if GlobalTestEnv.rbe? && GlobalTestEnv.browser == :chrome
30+
reset_driver!
31+
else
32+
driver.manage.delete_all_cookies
33+
end
34+
end
2935

3036
it 'sets correct defaults' do
3137
driver.manage.add_cookie name: 'default',

rb/spec/integration/selenium/webdriver/select_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ module Support
2929
let(:multi_disabled) { described_class.new(driver.find_element(name: 'multi_disabled')) }
3030

3131
before { driver.navigate.to url_for('formPage.html') }
32+
after { reset_driver! if GlobalTestEnv.rbe? && GlobalTestEnv.browser == :chrome }
3233

3334
describe '#initialize' do
3435
it 'raises exception if not a select element' do

rb/spec/integration/selenium/webdriver/target_locator_spec.rb

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,15 @@ module WebDriver
2525
before { @original_window = driver.window_handle }
2626

2727
after do
28-
handles = driver.window_handles
29-
driver.switch_to.window(@original_window) if handles.include?(@original_window)
30-
31-
(handles - [driver.window_handle]).each do |handle|
32-
driver.switch_to.window(handle) { driver.close }
28+
if GlobalTestEnv.rbe? && GlobalTestEnv.browser == :chrome
29+
reset_driver!
30+
else
31+
handles = driver.window_handles
32+
driver.switch_to.window(@original_window) if handles.include?(@original_window)
33+
34+
(handles - [driver.window_handle]).each do |handle|
35+
driver.switch_to.window(handle) { driver.close }
36+
end
3337
end
3438
end
3539

@@ -325,8 +329,6 @@ module WebDriver
325329
end
326330

327331
describe 'unhandled alert error' do
328-
after { |example| reset_driver!(example: example) }
329-
330332
it 'raises an UnexpectedAlertOpenError if an alert has not been dealt with' do
331333
driver.navigate.to url_for('alerts.html')
332334
driver.find_element(id: 'alert').click

scripts/remote-image/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Our images must be for Linux x86_64
2-
FROM --platform=linux/amd64 ubuntu:focal@sha256:8e5c4f0285ecbb4ead070431d29b576a530d3166df73ec44affc1cd27555141b
2+
FROM --platform=linux/amd64 ubuntu:jammy@sha256:ed1544e454989078f5dec1bfdabd8c5cc9c48e0705d07b678ab6ae3fb61952d2
33

44
ENV DEBIAN_FRONTEND=noninteractive
55

@@ -11,7 +11,7 @@ RUN apt-get -qqy update && \
1111
libnet1 \
1212
libzip-dev \
1313
linux-libc-dev \
14-
python3.9 \
14+
python3.10 \
1515
python-is-python3 \
1616
zip \
1717
zlib1g && \

0 commit comments

Comments
 (0)