Repository navigation
Expand file tree
/
Copy pathCHANGES
More file actions
764 lines (447 loc) · 21.7 KB
/
Copy pathCHANGES
File metadata and controls
764 lines (447 loc) · 21.7 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
4
8000
61
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
v0.8 2011-11-17
[API CHANGES]
* OperaDriver now uses temporary profile and random port by default.
This breaks backwards-compatibility with Opera < 11.60. Please set
capabilities opera.profile to "" (empty string) and opera.port to -1
for it to not use a temporary profile and the default port (7001).
(stuartk)
* Updated Selenium dependency to 2.12.0. (andreastt)
* Throwing UnsupportedCommandException rather than a
WebDriverException in OperaExec, so that it can be recovered.
(andreastt)
* Throwing UnsupportedOperationException for Options.ime().
(andreastt)
* Added Options.window() as a beta feature. Currently not
implemented, and will throw UnsupportedOperationException.
(andreastt)
* OperaRunnerSettings.setProduct() now accepts an OperaProduct, and
not a String anymore. (andreastt)
[NEW FEATURES]
* EcmascriptService is now used by default in OperaDriver, instead of
EcmaScriptDebugger. This means any injected JavaScript now
potentially goes through JIT, enabling the JIT compiler inside the
browser. (stuartk)
* Added "compile_protos" target to Ant build file for compiling proto
files to Java classes. (stuartk)
* Added support for frame switching. (stuartk)
* Introducing OperaArguments (with accompanying OperaArgument,
OperaCoreArgument and OperaDesktopArgument) which defines a joint
interface for interacting with arguments to various kinds of Opera
products. (andreastt)
* OperaProduct keeps a list of all Opera products. (andreastt)
[ENHANCEMENTS]
* Update EcmascriptService to be more similar to EcmaScriptDebugger.
(stuartk)
* Abstracted RuntimeNode from EcmaScriptDebugger into its own class so
that it can be reused in EcmascriptService. (stuartk)
* Move methods common to EcmaScriptDebugger and EcmascriptService to a
new class, AbstractEcmascriptService.
* Replacing Apache Commons IO library calls with Guava (Simon Stewart,
andreastt)
* Upgraded from using OperaDriverSettings to using DesiredCapabilities
in OperaDesktopDriver. (andreastt)
* The launchers have now been moved to a separate JAR,
operalaunchers-*.jar, effectively removing the need to traverse the
repo when running from source in SpartanRunner. (andreastt)
* OperaLauncherRunner made separate from OperaRunner. OperaRunner now
implements a Java native way of launching Opera. (andreastt)
* Logging all ES implementations used to FINE rather than INFO.
(andreastt)
* Which Opera product is used is fetched after connecting and stored
in the capability "opera.product". (andreastt)
[BUG FIXES]
* OperaWebElement.getCssValue() now returns HEX values for
colour-related variables. (andreastt)
* We were setting OperaIntervals#WAIT_FOR_ELEMENT to 0 every time when
looking for an element, which overrode the implicit wait time
specified through driver.manage().timeouts(). (andreastt)
* Use the passed idle argument, not forcing idle to be true when
calling setUseOperaIdle(). (danielb)
* Since -pd is ignored by core builds, we must for some reason send
-autotestmode last so that it doesn't consider the temporary profile
to be the starting URL. (andreastt)
* Fix for making sure we create runtimes when we try to find them,
instead of when we try to update the runtimes in EcmascriptService.
(stuartk)
* getWindowHandles() now gives names to windows without names.
(stuartk)
* Fix for NullPointerException if both window name and title are null
in OperaDriver.window(). (stuartk)
* Fix for a better way to verify whether EcmascriptService is
available. (stuartk)
* Catch invalid runtime exception for EcmascriptService. (stuartk)
* Now logging which status we receive from the launcher. (andreastt)
* Doing all port guessing in OperaRunnerSettings since it's specific
to launching Opera. (andreastt)
* Making sure Capabilities and OperaRunnerSettings are synchronized on
launch. (andreastt)
* Logging for when launcher is copied was misplaced, now corrected to
reflect reality. (andreastt)
[TESTS]
* Added tests for VersionUtils comparison. (dturkoglu)
* Removed irrelevant tests, corrected misleading pass conditions.
(andreastt, stuartk)
* Logging level when running tests is now set to FINE. (stuartK)
* Assert.assert* calls have now been replaced by static imports for
JUnit tests. (ajay, andreastt)
* Added tests for all new code added in this version. (andreastt)
* Added method for setting the launcher manually to
OperaLauncherRunnerSettings. This should never be used for other
purposes than testing. (andreastt)
* Added new @Ignore annotation which lets you ignore a test based on
product and/or platform. (andreastt)
* Corrected ignores for core- and desktop-specific tests. (andreastt)
* Reworked tests to use OperaDriverTestCase as a base. (andreastt)
* Added tests for OperaColor. (andreastt)
[OTHER]
* Added descriptions for all packages. (stuartk)
* A lot of documentation added to various places. (stuartk,
andreastt)
* Fixes for documentation in OperaDesktopDriver. (andreastt)
* Added IntelliJ run configurations for various tests. (andreastt)
* Removed reference to pkg/ as a library in IntelliJ configuration.
(andreastt)
* Examples have been cleaned up. (andreastt)
v0.7.3 2011-09-19
[API CHANGES]
* Update Selenium JAR to 2.6.0. (Ajay Kemparaj)
* Update the protobuf library from 2.3.0 to 2.4.1 and regenerating all
Proto files. (stuartk)
* If OPERA_PATH or OPERA_LAUNCHER are set to invalid paths, we will now fail
instead of attempting to recover by guessing Opera's path. (andreastt)
[NEW FEATURES]
* Add support for OperaDriver.switchTo().frame(WebElement). (stuartk)
[BUG FIXES]
* Fix bug preventing switching to frames beneath the current one. (stuartk)
* Fix for switching to sub-sub-frames. (stuartk)
* Fix getAttribute("value") on option element. (takahah)
[TESTS]
* Ignore failing tests. (stuartk)
[OTHER]
* Major refactoring of OperaPaths. (andreastt)
* Better exception if failing to start the launcher on Windows, explaining
Visual C++ dependency. (andreastt)
* Add script to compile Opera .proto files. (stuartk)
* Add .proto file for Opera launcher. (stuartk)
* Lowering error logging level for key errors. (andreastt)
* Update Selenium atoms to r13805. (stuartk)
* Add documentation for some internal methods. (stuartk)
* If running OperaDriver from the source directory it will now find the
launcher in the launcher/ directory. (andreastt)
* Update OperaWebElement.saveScreenshot() to use FileChannels. (Ajay Kemparaj)
v0.7.2 2011-09-08
[API CHANGES]
* DefaultDriverFactory in Selenium expects a Capabilities type constructor
argument rather than DesiredCapabilities. OperaDriver now uses Capabilities
instead to match the other WebDriver implementations. This fixes various
problems related to remote driving. (andreastt)
* The capability "opera.binary_profile" has been renamed to "opera.product".
(andreastt)
[BUG FIXES]
* Fix OperaWebElement.getLocation for SVG documents. (stuartk)
* -autotestmode, -debugproxy and -pd arguments are now sent to Opera before
unwrapping the arbitrary list of arguments sent by user. (andreastt)
* Sanitizing capabilities sent across the wire, as Ruby will sent us Long's
for Integer's which are not easily converted in Java. (andreastt)
[TESTS]
* Correct checking for Windows platform in tests. (stuartk)
* Updated various tests. (andreastt)
[OTHER]
* OperaWebElement now has its own logger. (stuartk)
* Java code refactoring. (ajayk)
v0.7.1 2011-09-06
[API CHANGES]
* Remove deprecated method OperaDriver.stop(). (andreastt)
* Remove deprecated method OperaDriver.closeAll(). (andreastt)
* Remove OperaDriver.convertByToAtom() as the WebDriver atoms now support
getting locators by nice wire strings. (andreastt)
* Remove OperaDriver.getProduct(), .getOS(), .getBinaryPath(),
.getCoreVersion(), .getUserAgent() and .getPID() and replace with
OperaDriver.utils().* (andreastt)
[BUG FIXES]
* Make OperaWebElement.sendKeys enter text at the end when an input has
default text. (stuartk)
* Clear Should only clear editable and enabled elements. (ajayk)
* Call services.shutdown(), as .quit() will also shut down Opera even if
'opera.no_quit' is set to true. (andreastt)
[NEW FEATURES]
* Add backwards-compat support for Window Manager 2.0 (for Opera Mobile).
(stuartk)
[OTHER]
* Cleaning up logging in OperaLauncherRunner, OperaLauncherBinary,
OperaLauncherProtocol, StpConnection, ScopeServices. (andreastt)
* Documenation and formatting fixes. (andreastt)
* Updated the atoms. (andreastt)
v0.7 2011-09-02
[API CHANGES]
* Support the use of DesiredCapabilities, instead of OperaDriverSettings.
OperaDriverSettings is still supported for backward compatibility, but
will be removed in the next point version (0.8). (stuartk)
* Update Selenium jar to 2.5.0.
* Remove OperaDriver.mouseEvent() method. Use the advanced interaction API
instead. Update OperaExec to allow several mouse keys to be pressed at once.
(andreastt)
* Updated SocketMonitor to not be a singleton, so that connections to
multiple instances of Opera can be maintained. (stuartk)
* Renamed OperaPaths.getOperaLauncherPath() to extractLauncher(path) to better match
what the method is actually doing. (andreastt)
* Remove OperaDriver.shutdown(). (stuartk)
[NEW FEATURES]
* Support DesiredCapabilities. Capabilities include "opera.binary" and
"opera.arguments" amongst others. See the top of the OperaDriver class
for all of them. (stuartk)
* Support the "personal directory", `-pd`, flag with the "opera.profile"
capability. Currently only available on Linux Opera builds.
* Add "opera.port" capability to set the port that Opera communicates with
driver on. Allows multiple instances of Opera to be run at once. Requires
the `-debugproxy` flag, which is not yet available in current versions
of Opera. (stuartk)
* Add capability to set the logging level and file with "opera.logging.level"
and "opera.logging.file". (andreastt)
* Updated Linux launcher to support the `-profile` argument, to specify
which build profile we are using (Note: this ISN'T the Opera user profile).
(Iaroslav Tymchenko)
* Display the command used to start Opera when it exits immediately (usually
due to bad command line arguments). (stuartk)
[BUG FIXES]
* Correct LEFT_CONTROL enum in OperaKeys to make code such as
`action.sendKeys(Keys.CONTROL + "c")` work. (stuartk)
* Escape double quotes instead of single quotes in findElementsBy* methods.
Fixes the problems with pre-escaped strings sent from selenium-webdriver.
(andreastt)
* Fix for bug DSK-344905; Opera should not quit after testrun with noquit
option (Karianne Ekern)
* Wait between two double clicks so that Opera doesn't interpret it as as a
quadruple-click. (andreastt)
* Throw InvalidSelectorException when selectors are invalid. (stuartk)
* Use OpenURL command in new Window Manager service. Fixes case where loading
a page in a new window would cause a ResponseNotReceivedException. (stuartk)
* Don't timeout when a window is closed by Javascript. (stuartk)
* Check services isn't null before shutting it down. (stuartk)
[TESTS]
* Add tests for modifier keys. (stuartk)
* Ignore some launcher tests on Windows. (stuartk)
* Skip selftest tests when service isn't supported. (stuartk)
* Add tests for Profile and Port capabilities. (stuartk)
[OTHER]
* Update build.xml to target Java 5/1.5. (stuartk)
* Compile tests to the bin/ directory, rather than the tests/ directory.
(andreastt)
* Reduce the logging level from FINE to FINER or FINEST for noisy log
messages. (stuartk)
* Update Window Manager service from 2.0 to 2.1. (stuartk)
v0.6.1 2011-08-29
[API CHANGES]
* Remove OperaDriver.mouseEvent(). (andreastt)
* Switch order and type of arguments to OperaExec.mouseAction(). (andreastt)
* Update Selenium jar to r13628, to include double-click fix in r13592.
(andreastt)
[BUG FIXES]
* Wait in between sending double-click events so that Opera does not think
that it is a quadruple-click. (andreastt)
[TESTS]
* Fix tests to not use OperaDriver.mouseEvent(). (andreastt)
v0.6 2011-08-03
[API CHANGES]
* Add complete support for the Advanced User Interactions API:
<URI:http://code.google.com/p/selenium/wiki/AdvancedUserInteractions>
* OperaWebElement.getLocation() now returns the location in the DOM, rather
than in the viewport. To get viewport location use
`getCoordinates().getLocationInViewPort()`. (andreastt, stuartk)
* Use Selenium atoms (see below).
* Update Selenium jar to 2.3.0.
[NEW FEATURES]
* Added ability to navigate menus in Opera Desktop. (Karianne Ekern,
Adam Minchinton)
* Add selftest service. (Arne Skjærholt)
* Use atoms from the Selenium project instead of our own custom JS for:
- Finding elements from OperaDriver and OperaWebElement
- Getting attributes, style, location and size of OperaWebElement
- Getting displayed, enabled and selected state of OperaWebElement
- Submitting and toggling OperaWebElement
- Getting the text of OperaWebElement
(stuartk)
* If available show Ecmascript error message in the exception. (stuartk)
* Correctly return WebElements when they are in another JS object, such as
an array. (stuartk)
[BUG FIXES]
* OperaDriver.navigate().frame(String) now switches to frames with "."s in
rather than sub-frames. (stuartk)
[TESTS]
* Add tests for selftest. (Arne Skjærholt)
* Add test for finding sub-elements on a OperaWebElement. (stuartk)
* Add test for executing Javascript returning an array of elements. (stuartk)
[OTHER]
* Add UMS protobuf file. Regenerate the Java code (no effective changes).
(stuartk)
* Move OperaMouse and OperaKeyboard into separate classes. (andreastt)
* Update pom.xml to contain all needed info. (stuartk)
v0.5.2 2011-07-01
[BUG FIXES]
* Escape quotes for strings passed to find*By* methods on OperaWebElement
(andreastt)
* Fix for click()ing/toggling multiple-select <option> elements (stuartk)
v0.5.1 2011-06-27
[BUG FIXES]
* Core Scope service no longer required, to support earlier Opera versions.
(stuartk)
* Shutdown Scope services in alternate way to support earlier Opera versions.
(stuartk)
v0.5 2011-06-26
[KNOWN ISSUES]
* Requires Administrator privileges on Windows Vista and 7 when Opera is
installed in the default location (Program Files). See README.txt for
workarounds.
* getScreenshotAs() only returns image data of the current viewport, other
parts of the image will be black.
[API CHANGES]
* Add getOS(), getProduct(), getBinaryPath(), getUserAgent(), getPID() to
OperaDriver. (andreastt)
* Implement TakesScreenshot. (stuartk)
* Extend RemoteWebDriver. (stuartk)
* Implement HasDevices (Advanced interaction API). Not fully tested, use
with caution! (stuartk)
* Add listAllPrefs() method on OperaDriver. (stuartk)
* Change listPrefs() to return a map of preference name to Pref object,
instead of a list of Pref objects.
* Update to selenium-java-2.0rc3
[NEW FEATURES]
* Add ability to get meta-information about Opera when using Opera 11.50 or
greater (see [API CHANGES]). (andreastt)
* Selenium APIs implemented: RemoteWebDriver, TakesScreenshot, HasDevices
(stuartk)
* Added maven/pom.xml. (michael tamm)
[ENHANCEMENTS]
* Forward crash status along with the screenshot reply (danielb)
* Capture more logging (danielb)
* Add RemoteWebDriver example. (stuartk)
[BUG FIXES]
* Fix click() method in OperaWebElement for OPTION elements. (stuartk)
* Escape quotes for strings passed to find*By* methods. (stuartk, andreastt)
[TESTS]
* Ignore failing screenshot test. (stuartk)
* Add test for quote escaping. (andreastt)
* Added tests for getting preferences. (andreastt)
[OTHER]
* Rename released jar from webdriver-opera-${version}.jar to
operadriver-${version}.jar. (stuartk)
* Include source jar in release zip file. (stuartk)
v0.4.3 2011-06-14
[API CHANGES]
* Update to a snapshot of selenium post 2.0rc2. This removes
RenderedWebElement, and OperaWebElement.getvalue(). Use
getAttribute("value") instead.
[NEW FEATURES]
* Add OperaDriver.setUseOperaIdle(boolean).
[ENHANCEMENTS]
* Check Opera Actions case-insensitively.
[BUG FIXES]
* Keep closer track of the Opera Idle timeout for cases where we don't
receive the idle message.
* Fix socket timeout.
[TESTS]
* Remove consistently failing tests "testFlash" and "testReflow".
v0.4.2 2011-05-19
[NEW FEATURES]
* Add ability to get source of XML page.
* Read value of the OPERA_ARGS environment variable. This is concatenated
with any arguments set in OperaDriverSettings.setOperaBinaryArguments().
[ENHANCEMENTS]
* Reduce page load timeout to 30 seconds from 60s.
* Remove check for pressing already pressed key.
[BUG FIXES]
* Distinguish between upper- and lower-case attributes in XHTML documents.
* Selenium test suite fixes:
- Fix isDisplayed on map elements
- Only switch to frames underneath the current frame
- Return value property instead of attribute in getAttribute
- Don't press and release shift to type captials if it's already down
- Hold down shift and control keys in sendKeys
[TESTS]
* Remove repeating keys tests.
v0.4.2.pre7 2011-05-06
[ENHANCEMENTS]
* Do not use idle detection unless the core version is >= 1.1.
* Call quit if init fails in OperaDriver.
* Show the output from launcher when using fine logging.
* Set socket timeout also for new sockets.
[BUG FIXES]
* OperaWebElement.isDisplayed() returns true for <option> elements whose
<select> parent is displayed.
* OperaWebElement.getText() collapses two spaces in two adjacent inline
elements.
* Don't switch to first frame on a page with a frameset.
* Fix for communication with Opera being faster than Opera.
v0.4.2.pre6 2011-04-29
[API CHANGES]
* Un-deprecate OperaDriverSettings.getNoQuit/setNoQuit and UmsEventHandler.
* Deprecate OperaDriver.shutdown().
* OperaDriver.quit() replaces OperaDriver.shutdown().
* Deprecate OperaDriver.closeAll(), .executeActions(), .stop().
* Deprecate RenderedWebElement methods on OperaWebElement.
* Deprecate OperaWebElement.hover().
* Add OperaWebElement.mouseOver() (replace .hover()).
* Update Selenium JAR to code from SVN revision 12071.
[NEW FEATURES]
* Add ScopeServices.captureOperaIdle(). Enables the tracking of any Idle
events received between now and when you call waitForOperaIdle().
* Add OperaWebElement.saveScreenshot() to match behaviour of
OperaDriver.saveScreenshot() method.
* Add timeout for Opera to connect to Driver. If exceeded an exception is thrown.
* Throw exception if Opera quits immediately after launch, for example if it
doesn't recognise arguments.
[ENHANCEMENTS]
* Regenerated desktopwm protos from updated service with new griditem and
gridview types (Desktop).
* Make specifying or constructing buttons by position possible (Desktop).
* Add type checking to retrieval algorithm for widgets (Desktop).
[BUG FIXES]
* Setting operaBinaryArguments to null no longer causes a crash.
* Correctly shutdown when Opera crashes (Desktop).
* Updated launcher-linux-x86_64 to work with an older libc library.
* Updated OperaWebElement to pass more Selenium tests:
- OperaWebElement implements WrapsDriver
- OperaWebElement uses InvalidElementStateExceptions
- Add more checks for disabled or hidden elements
- OperaWebElement.sendKeys now sends 'special' keys when part of a string
[TESTS]
* Move test fixture setup into own function to allow use in tests that do
not start driver.
* Improved Idle tests.
[OTHER]
* Add the Scope .proto files to the repository.
v0.4.2.pre5 2011-03-14
[API CHANGES]
* Removed preference paths from OperaDriverSettings.
[NEW FEATURES]
* New settings added to OperaDriverSettings:
- Disable Opera Idle
- Autostart setting to replace passing `null` into OperaDriver().
* Always pass `-autotestmode` in to Opera. This will cause versions of Opera
which do not support this flag to fail to start. Use a manual start instead.
[ENHANCEMENTS]
* Increase page load timeout from 5 seconds to 60 seconds.
* Merged desktop changes.
* Disallow deletion of default main user profile.
* Do not use pageload timeout for window events
* Reduce level of Opera Idle logging output.
* Correctly re-extract launchers when they have changed inside the JAR.
* Buildfile updated to make testing and releasing easier.
- Version number is obtained from `git describe`.
- `test` target generates reports.
- Individual tests can be run using -Dclass=com.opera.core.systems.<Class>
where <Class> is one of the classes under test/.
- Add launchers to jar in `jar` task, rather than executing `zip`.
Compatibility with Windows.
[BUG FIXES]
* Update launchers to die after losing their connection to OperaDriver. Fix
for launchers on Windows lingering.
* Fixes for some "No response in a timely fashion" exceptions. Prevent
buffer under-runs on slow connections.
[TESTS]
* Added and updated unit tests for:
- Frames
- OperaDriver core
- OperaLauncherRunner
- Opera path guessing
- Opera Idle