diff --git a/docs/reference/settings.md b/docs/reference/settings.md index c74f139e5..258c8ff7f 100644 --- a/docs/reference/settings.md +++ b/docs/reference/settings.md @@ -37,7 +37,7 @@ Along with the common settings, the following driver-specific settings are avail | `nativeWebTapSmartAppBannerVisibility` | `enum` | The same as `nativeWebTapTabBarVisibility`, this keyword will bypass finding whether the existence of the _**smart app banner**_. | | `safariTabBarPosition` | `string` | Handle offset of Safari tab bar in `nativeWebTap` enabled interactions. If `platformVersion` was greater than or equal to 15 and iPhone device, the value is `bottom` by default. Otherwise `top`. When the value is `top`, Appium considers offset as the bar length. iOS 15+ environment can customize the bar position in the settings app, so please adjust the offset with this. Acceptable values: `bottom`, `top` | | `useJSONSource` | `boolean` | See the description of the corresponding capability. | -| `pageSourceExcludedAttributes` | `string` | One or more comma-separated attribute names to be excluded from the XML output. It might be sometimes helpful to exclude, for example, the `visible` attribute, to significantly speed-up page source retrieval. This does not affect the XML output when `useJSONSource` is enabled. Defaults to an empty string. Example: `"visible,accessible"` | +| `pageSourceExcludedAttributes` | `string` | One or more comma-separated attribute names to be excluded from the output. It might be sometimes helpful to exclude, for example, the `visible` attribute, to significantly speed-up page source retrieval. Attributes which can be excluded with `useJSONSource` are frame, enabled, visible, accessible and focused. Defaults to an empty string. Example: `"visible,accessible"` | | `maxTypingFrequency` | `int` | Maximum frequency of keystrokes for typing and clear. If your tests are failing because of typing errors, you may want to adjust this. Defaults to `60` keystrokes per minute. | | `respectSystemAlerts` | `boolean` | Currently we detect the app under test as active if XCTest returns XCUIApplicationStateRunningForeground state for it. In case the app under test is covered by a system alert from the Springboard app this approach might be confusing as we cannot interact with it unless an alert is properly handled. If this setting is set to true (by default it is false) then it forces WDA to verify the presence of alerts shown by Springboard and return the latter while performing the automated app detection. It affects the performance of active app detection, but might be more convenient for writing test scripts (e.g. eliminates the need of proactive switching between system and custom apps). Also, this behavior emulates the legacy active application detection logic before version 6 of the driver. | | `webScreenshotMode` | `native` or `page` or `viewport` | Defines the screenshoting logic if the current context is set to a web one. The default value is `native`, which makes the driver to take screenshots from WDA, e.g. the whole device screen including status bars. The `page` mode tries to retrieve the screenshot of the whole active web page, while the `viewport` one only retrieves a shot of the visible viewport. | diff --git a/lib/commands/source.js b/lib/commands/source.js index 24abcd546..4d3df6916 100644 --- a/lib/commands/source.js +++ b/lib/commands/source.js @@ -13,16 +13,17 @@ const commands = { return await this.executeAtom('execute_script', [script, []]); } - if ((await this.settings.getSettings()).useJSONSource) { - const srcTree = await this.mobileGetSource('json'); + const { + pageSourceExcludedAttributes: excludedAttributes, + useJSONSource + } = await this.settings.getSettings(); + const hasExcludedAttributes = _.isString(excludedAttributes) && !_.isEmpty(excludedAttributes); + if (useJSONSource) { + const srcTree = await this.mobileGetSource('json', hasExcludedAttributes ? excludedAttributes : undefined); return getSourceXml(getTreeForXML(srcTree)); } - const excludedAttributes = (await this.settings.getSettings()).pageSourceExcludedAttributes; - const hasExcludedAttributes = _.isString(excludedAttributes) && !_.isEmpty(excludedAttributes); - return hasExcludedAttributes - ? await this.mobileGetSource('xml', excludedAttributes) - : await this.mobileGetSource('xml'); + return await this.mobileGetSource('xml', hasExcludedAttributes ? excludedAttributes : undefined); }, }; diff --git a/package.json b/package.json index ea9fd9f36..3568c9a46 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "appium-ios-device": "^2.7.23", "appium-ios-simulator": "^6.1.7", "appium-remote-debugger": "^12.1.1", - "appium-webdriveragent": "^8.10.0", + "appium-webdriveragent": "^8.11.0", "appium-xcode": "^5.1.4", "async-lock": "^1.4.0", "asyncbox": "^3.0.0",