diff --git a/examples/hello_world/test_driver/smoke_web_engine_test.dart b/examples/hello_world/test_driver/smoke_web_engine_test.dart
index 2ca900c..875c3fb 100644
--- a/examples/hello_world/test_driver/smoke_web_engine_test.dart
+++ b/examples/hello_world/test_driver/smoke_web_engine_test.dart
@@ -31,7 +31,7 @@
     });
 
     test('enable accessibility', () async {
-      await driver.enableAccessibility();
+      await driver.setSemantics(true);
 
       await Future<void>.delayed(const Duration(seconds: 2));
 
diff --git a/packages/flutter_driver/lib/src/driver/driver.dart b/packages/flutter_driver/lib/src/driver/driver.dart
index 063137d..95763da 100644
--- a/packages/flutter_driver/lib/src/driver/driver.dart
+++ b/packages/flutter_driver/lib/src/driver/driver.dart
@@ -174,8 +174,12 @@
   async_io.WebDriver get webDriver => throw UnimplementedError();
 
   /// Enables accessibility feature.
+  @Deprecated(
+    'Call setSemantics(true) instead. '
+    'This feature was deprecated after v2.3.0-12.1.pre.'
+  )
   Future<void> enableAccessibility() async {
-    throw UnimplementedError();
+    await setSemantics(true);
   }
 
   /// Sends [command] to the Flutter Driver extensions.
@@ -522,6 +526,13 @@
   ///
   /// Returns true when the call actually changed the state from on to off or
   /// vice versa.
+  ///
+  /// Does not enable or disable the assistive technology installed on the
+  /// device. For example, this does not enable VoiceOver on iOS, TalkBack on
+  /// Android, or NVDA on Windows.
+  ///
+  /// Enabling semantics on the web causes the engine to render ARIA-annotated
+  /// HTML.
   Future<bool> setSemantics(bool enabled, { Duration? timeout }) async {
     final SetSemanticsResult result = SetSemanticsResult.fromJson(await sendCommand(SetSemantics(enabled, timeout: timeout)));
     return result.changedState;
diff --git a/packages/flutter_driver/lib/src/driver/vmservice_driver.dart b/packages/flutter_driver/lib/src/driver/vmservice_driver.dart
index eb31919..32e3196 100644
--- a/packages/flutter_driver/lib/src/driver/vmservice_driver.dart
+++ b/packages/flutter_driver/lib/src/driver/vmservice_driver.dart
@@ -287,10 +287,6 @@
   /// Whether to log communication between host and app to `flutter_driver_commands.log`.
   final bool _logCommunicationToFile;
 
-  @override
-  Future<void> enableAccessibility() async {
-    throw UnsupportedError('VMServiceFlutterDriver does not support enableAccessibility');
-  }
 
   @override
   Future<Map<String, dynamic>> sendCommand(Command command) async {
diff --git a/packages/flutter_driver/lib/src/driver/web_driver.dart b/packages/flutter_driver/lib/src/driver/web_driver.dart
index f338286..e5229e0 100644
--- a/packages/flutter_driver/lib/src/driver/web_driver.dart
+++ b/packages/flutter_driver/lib/src/driver/web_driver.dart
@@ -39,7 +39,6 @@
 
   final FlutterWebConnection _connection;
   DateTime _startTime;
-  bool _accessibilityEnabled = false;
   static int _nextDriverId = 0;
 
   /// The unique ID of this driver instance.
@@ -97,22 +96,6 @@
   }
 
   @override
-  Future<void> enableAccessibility() async {
-    if (!_accessibilityEnabled) {
-      // Clicks the button to enable accessibility via Javascript for Desktop Web.
-      //
-      // The tag used in the script is based on
-      // https://github.com/flutter/engine/blob/master/lib/web_ui/lib/src/engine/semantics/semantics_helper.dart#L193
-      //
-      // TODO(angjieli): Support Mobile Web. (https://github.com/flutter/flutter/issues/65192)
-      await webDriver.execute(
-          "document.querySelector('flt-semantics-placeholder').click();",
-          <String>[]);
-      _accessibilityEnabled = true;
-    }
-  }
-
-  @override
   Future<Map<String, dynamic>> sendCommand(Command command) async {
     Map<String, dynamic> response;
     final Map<String, String> serialized = command.serialize();
diff --git a/packages/flutter_driver/test/src/real_tests/flutter_driver_test.dart b/packages/flutter_driver/test/src/real_tests/flutter_driver_test.dart
index b3928e0..12a557d 100644
--- a/packages/flutter_driver/test/src/real_tests/flutter_driver_test.dart
+++ b/packages/flutter_driver/test/src/real_tests/flutter_driver_test.dart
@@ -630,15 +630,31 @@
       });
     });
 
-    group('VMServiceFlutterDriver Unsupported error', () {
-      test('enableAccessibility', () async {
-        expect(driver.enableAccessibility(), throwsUnsupportedError);
+    group('setSemantics', () {
+      test('can be enabled', () async {
+        fakeClient.responses['set_semantics'] = makeFakeResponse(<String, Object>{
+          'changedState': true,
+        });
+        await driver.setSemantics(true, timeout: _kTestTimeout);
+        expect(fakeClient.commandLog, <String>[
+          'ext.flutter.driver {command: set_semantics, timeout: $_kSerializedTestTimeout, enabled: true}',
+        ]);
       });
 
-      test('webDriver', () async {
-        expect(() => driver.webDriver, throwsUnsupportedError);
+      test('can be disabled', () async {
+        fakeClient.responses['set_semantics'] = makeFakeResponse(<String, Object>{
+          'changedState': false,
+        });
+        await driver.setSemantics(false, timeout: _kTestTimeout);
+        expect(fakeClient.commandLog, <String>[
+          'ext.flutter.driver {command: set_semantics, timeout: $_kSerializedTestTimeout, enabled: false}',
+        ]);
       });
     });
+
+    test('VMServiceFlutterDriver does not support webDriver', () async {
+      expect(() => driver.webDriver, throwsUnsupportedError);
+    });
   });
 
   group('VMServiceFlutterDriver with custom timeout', () {
