Compare commits

...
Author SHA1 Message Date
dpgraham 743ca72e70 v1.20.2 2021-01-21 09:52:47 -08:00
dpgraham 082396ce19 appium v1.20.2-rc.0 2021-01-20 11:15:12 -08:00
dpgraham 4b2342f25e v1.20.1 2021-01-14 10:24:34 -08:00
dpgraham 86074b9b6c bump up uiautomator2-driver 2021-01-12 14:41:26 -08:00
dpgraham 6f2212a215 v1.20.0 2021-01-05 08:44:24 -08:00
dpgraham 077993ce01 v1.20.0-rc.2 2021-01-04 14:08:47 -08:00
dpgraham 6f32745e71 bump appium-xcuitest-driver 2021-01-04 14:07:50 -08:00
dpgraham 88e2d02454 1.20.0-rc.1 2020-12-30 11:35:31 -08:00
dpgraham dd3fdf329e 1.20.0-rc.0 2020-12-30 11:35:18 -08:00
dpgraham 33ab151d04 add shrinkwrap 2020-12-30 11:35:09 -08:00
Jonathan Lipps 9d8779a224 feat: add --keep-alive-timeout CLI arg to adjust server keepalive and connection timeout 2020-12-15 11:01:17 -08:00
Kazuaki Matsuo a1ef920af1 chore: add 1.19.1 in changelog (#14947) 2020-12-14 10:40:15 +09:00
Kazuaki Matsuo 149ce03b84 chore: remove authorize-ios from package (#14946) 2020-12-13 06:18:09 +09:00
Kazuaki Matsuo 09437412c8 docs: add links to mac2 driver in caps and settings (#14942)
* cods: add links to mac2 driver in caps and settings

* tweak naming
2020-12-11 04:39:58 +09:00
roman-olshevskiy 0256991162 docs: removed deprecated method (#14934)
assert.equal was deprecated — since v9.9.0 - use strictEqual() instead.
2020-12-09 09:14:26 +09:00
Appium Triagerandrunner 604170a7ad docs: Update generated docs [ci skip] (#14930)
Co-authored-by: runner <runner@Mac-1607067954655.local>
2020-12-04 17:11:34 +09:00
Kazuaki Matsuo 509ab16612 chore: fix a link in appium.io (#14929)
* fix links

* fix
2020-12-04 17:07:53 +09:00
Ilija Boshkov 6184bf96b6 docs: Update push-file.yml (#14920) 2020-12-01 12:00:00 +09:00
Dan Graham 12e28c9e08 chore: add scripts for doing releases (#14918) 2020-11-29 13:01:03 -08:00
Mykola Mokhnach 090640e348 docs: Add Mac2Driver documentation (#14914) 2020-11-25 08:26:11 +01:00
Mykola Mokhnach a5c6f1c80e feat: Add Mac2Driver (#14911) 2020-11-25 07:52:48 +01:00
Appium Triagerandrunner 8d181dd19f docs: Update generated docs [ci skip] (#14913)
Co-authored-by: runner <runner@Mac-1606273407156.local>
2020-11-25 12:20:45 +09:00
Kazuaki Matsuo eb189d4588 fix: fix urls in docs (#14910) 2020-11-25 05:25:01 +09:00
38 changed files with 16820 additions and 142 deletions
+9
View File
@@ -1,3 +1,12 @@
CHANGES IN VERSION 1.19.1(FROM 1.19.0)
===================================
Appium 1.19.1 is a patch release
### iOS(XCUITest)
Patches "missing target for targetId" bug in Safari tests (see [#14867](https://github.com/appium/appium/issues/14867))
CHANGES IN VERSION 1.19.0 (FROM 1.18.3)
===================================
@@ -5,7 +5,7 @@ short_description: Place a file onto the device in a particular place
example_usage:
java:
|
driver.pushFile("/path/to/device/foo.bar", new File("/Users/johndoe/files/foo.bar"));
driver.pushFile("/data/local/tmp/foo.bar", new File("/Users/johndoe/files/foo.bar"));
python:
|
dest_path = '/data/local/tmp/test_push_file.txt'
@@ -13,23 +13,23 @@ example_usage:
self.driver.push_file(dest_path, base64.b64encode(data).decode('utf-8'))
javascript_wd:
|
await driver.pushFileToDevice('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
await driver.pushFileToDevice('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
javascript_wdio:
|
let data = new Buffer("Hello World").toString('base64');
driver.pushFile('/data/local/tmp/file.txt', data);
ruby:
|
push_file('/path/to/device/foo.bar', File.read('path/to/file.png'))
push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png'))
ruby_core:
|
@driver.push_file('/path/to/device/foo.bar', File.read('path/to/file.png'))
@driver.push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png'))
php:
|
$driver->pushFile('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
$driver->pushFile('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
csharp:
|
driver.PushFile("/path/to/device/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar"))
driver.PushFile("/data/local/tmp/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar"))
client_docs:
java: "https://appium.github.io/java-client/io/appium/java_client/android/PushesFiles.html#pushFile-java.lang.String-java.io.File-"
@@ -42,8 +42,8 @@ example_usage:
action.Perform();
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#doubleTap-org.openqa.selenium.WebElement-"
python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.double_tap"
java: "https://www.selenium.dev/selenium/docs/api/java/overview-summary.html"
python: "https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.double_tap"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L425"
javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchdoubleclick"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:double_tap"
@@ -38,7 +38,7 @@ example_usage:
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#flick-org.openqa.selenium.WebElement-int-int-int-"
python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element"
python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element"
javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchflick"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1513"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:flick"
@@ -45,7 +45,7 @@ example_usage:
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#longPress-org.openqa.selenium.WebElement-"
python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.long_press"
python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.long_press"
javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#touchperform"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1531"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:long_press"
@@ -52,7 +52,7 @@ example_usage:
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-"
python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.move"
python: "https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.touch_actions"
javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#multitouchperform"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1531"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:move"
@@ -39,7 +39,7 @@ example_usage:
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#scroll-int-int-"
python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.scroll"
python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.scroll"
javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchscroll"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L425"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:scroll"
@@ -48,7 +48,7 @@ example_usage:
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-"
python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold"
python: "https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold"
javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchdown"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1546"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TouchActionBuilder#down-instance_method"
@@ -48,7 +48,7 @@ example_usage:
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#up-int-int-"
python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.release"
python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.release"
javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchup"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1546"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:up"
+3 -3
View File
@@ -90,12 +90,12 @@ example_usage:
AndroidDriver<AndroidElement> driver = new AndroidDriver<AndroidElement>(new Uri("http://127.0.0.1:4723/wd/hub"), appiumOptions);
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/DefaultSession.html#createSession-org.openqa.selenium.remote.server.DriverFactory-org.openqa.selenium.remote.server.Clock-org.openqa.selenium.remote.SessionId-org.openqa.selenium.Capabilities-"
java: "https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html"
python: "http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webelement.WebElement.clear"
javascript_wdio: "https://webdriver.io/docs/api/webdriver.html#newsession"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1780"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear"
ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear"
ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver"
ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver"
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link
+1 -1
View File
@@ -29,7 +29,7 @@ example_usage:
ICapabilities caps = driver.Capabilities;
client_docs:
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/ActiveSessions.html#get-org.openqa.selenium.remote.SessionId-"
java: "https://www.selenium.dev/selenium/docs/api/java/overview-summary.html"
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.session.Session.session"
javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#getsession"
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L227"
@@ -23,7 +23,6 @@ git clone https://github.com/appium/appium.git
cd appium
npm install
npm run build
npm run authorize-ios # for ios only
node .
```
```center
@@ -31,7 +30,6 @@ git clone https://github.com/appium/appium.git
cd appium
npm install
npm run build # 需要gulp,往下看
npm run authorize-ios # 仅iOS
node .
```
@@ -74,31 +72,6 @@ node .
完整的参数列表,请参考[the server documentation](/docs/cn/writing-running-appium/server-args.md)
#### Hacking with Appium for iOS
#### 鼓捣 iOS 上的Appium
为了避免启动iOS应用程序时可能出现的安全对话框,您必须通过以下两种方式之一修改 `/etc/authorization` 文件:
1. 手动修改 `/etc/authorization` 文件中的 `<key>system.privilege.taskport</key>` 下的 `<allow-root>`的值为 `<true/>`。
2. 运行以下命令,为您自动修改 `/etc/authorization` 文件:
```center
sudo npm run authorize-ios
```
此时,运行:
```center
rm -rf node-modules
npm install
npm run build
```
现在你的 Appium 实例已经准备好了。运行 `node .` 以启动Appium服务器。
#### 鼓捣 Android 上的Appium
通过运行以下命令配置Appium:
+2 -2
View File
@@ -209,7 +209,7 @@ simply type into a text field and check that the correct text was entered:
const field = await client.$("android.widget.EditText");
await field.setValue("Hello World!");
const value = await field.getText();
assert.equal(value, "Hello World!");
assert.strictEqual(value, "Hello World!");
```
What's going on here is that after creating a session and launching our app,
@@ -245,7 +245,7 @@ async function main () {
const field = await client.$("android.widget.EditText");
await field.setValue("Hello World!");
const value = await field.getText();
assert.equal(value,"Hello World!");
assert.strictEqual(value,"Hello World!");
await client.deleteSession();
}
+3
View File
@@ -107,3 +107,6 @@ Settings are implemented via the following API endpoints:
| `boundElementsByIndex` | Whether to look up elements with [`allElementsBoundByAccessibilityElement`](https://developer.apple.com/documentation/xctest/xcuielementquery/1500816-allelementsboundbyaccessibilitye) (default) or [`allElementsBoundByIndex`](https://developer.apple.com/documentation/xctest/xcuielementquery/1500945-allelementsboundbyindex). [This Stack Overflow topic](https://stackoverflow.com/questions/49307513/meaning-of-allelementsboundbyaccessibilityelement) explains the differences. Defaults to `false` | `true`, `false` | 1.18.0+ |
### Mac2
Please refer to the documentation on the [Mac2Driver repository](https://github.com/appium/appium-mac2-driver#settings-api)
+6 -6
View File
@@ -7,7 +7,7 @@ Place a file onto the device in a particular place
```java
// Java
driver.pushFile("/path/to/device/foo.bar", new File("/Users/johndoe/files/foo.bar"));
driver.pushFile("/data/local/tmp/foo.bar", new File("/Users/johndoe/files/foo.bar"));
```
@@ -26,29 +26,29 @@ let data = new Buffer("Hello World").toString('base64');
driver.pushFile('/data/local/tmp/file.txt', data);
// wd example
await driver.pushFileToDevice('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
await driver.pushFileToDevice('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
```
```ruby
# Ruby
# ruby_lib example
push_file('/path/to/device/foo.bar', File.read('path/to/file.png'))
push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png'))
# ruby_lib_core example
@driver.push_file('/path/to/device/foo.bar', File.read('path/to/file.png'))
@driver.push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png'))
```
```php
# PHP
$driver->pushFile('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
$driver->pushFile('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
```
```csharp
// C#
driver.PushFile("/path/to/device/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar"))
driver.PushFile("/data/local/tmp/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar"))
```
@@ -85,8 +85,8 @@ action.Perform();
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#doubleTap-org.openqa.selenium.WebElement-) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.double_tap) |
|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/overview-summary.html) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.double_tap) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L425) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:double_tap) |
+1 -1
View File
@@ -81,7 +81,7 @@ action.Perform();
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#flick-org.openqa.selenium.WebElement-int-int-int-) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1513) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:flick) |
@@ -88,7 +88,7 @@ touchAction.LongPress(element).Perform();
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#longPress-org.openqa.selenium.WebElement-) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.long_press) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.long_press) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1531) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:long_press) |
+1 -1
View File
@@ -98,7 +98,7 @@ As of Appium 1.8.0 all move actions take coordinates that are absolute.
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.move) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.touch_actions) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1531) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:move) |
@@ -82,7 +82,7 @@ action.Perform();
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#scroll-int-int-) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.scroll) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.scroll) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L425) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:scroll) |
@@ -91,7 +91,7 @@ action.Perform();
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1546) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TouchActionBuilder#down-instance_method) |
@@ -91,7 +91,7 @@ action.Perform();
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#up-int-int-) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.release) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.release) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1546) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:up) |
+2 -2
View File
@@ -133,11 +133,11 @@ Please do not forget to call [delete command](/docs/en/commands/session/delete.m
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/DefaultSession.html#createSession-org.openqa.selenium.remote.server.DriverFactory-org.openqa.selenium.remote.server.Clock-org.openqa.selenium.remote.SessionId-org.openqa.selenium.Capabilities-) |
|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webelement.WebElement.clear) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1780) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear) |
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver) |
|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) |
|[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) |
+1 -1
View File
@@ -72,7 +72,7 @@ ICapabilities caps = driver.Capabilities;
|Language|Support|Documentation|
|--------|-------|-------------|
|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/ActiveSessions.html#get-org.openqa.selenium.remote.SessionId-) |
|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/overview-summary.html) |
|[Python](https://github.com/appium/python-client/releases/latest)| All | [appium.github.io](https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.session.Session.session) |
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | |
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L227) |
@@ -64,29 +64,6 @@ node .
See [the server documentation](/docs/en/writing-running-appium/server-args.md)
for a full list of command line arguments that can be used.
#### Hacking with Appium for iOS
To avoid a security dialog that may appear when launching your iOS apps you'll
have to modify your `/etc/authorization` file in one of two ways:
1. Manually modify the element following `<allow-root>` under `<key>system.privilege.taskport</key>`
in your `/etc/authorization` file to `<true/>`.
2. Run the following command which automatically modifies your
`/etc/authorization` file for you:
```
sudo npm run authorize-ios
```
At this point, run:
```
rm -rf node_modules && rm -rf package-lock.json && npm install
```
Now your Appium instance is ready to go. Run `node .` to kick up the Appium server.
#### Hacking with Appium for Android
To work on Android, make sure you have `ant`, `maven`, and `adb` installed
@@ -139,7 +139,7 @@ for e2e test files to end in `-e2e-specs.js`.
The release process for any Appium module other than the main Appium package is
pretty straightforward (note that you will need to be an NPM owner for the
package if you want to publish it. Ownership is managed by the Appium
committers; talk to @jlipps or @imurchie if you believe you should be an owner
committers; talk to @jlipps, @kazucocoa, @dang, @mykola-mokhnach if you believe you should be an owner
and are not):
1. `rm -rf node_modules && rm -rf package-lock.json && npm install` and run tests to make sure a clean install works.
@@ -149,7 +149,7 @@ and are not):
1. Push the appropriate branch to GitHub, and don't forget to include the `--tags` flag to include the tag just created by `npm version`.
1. Run `npm publish` (with `--tag beta` if this isn't an official release).
For the main Appium packages, all the above steps must be taken, but with
For the main Appium package, all the above steps must be taken, but with
several changes. One reason is that for the main package we use NPM shrinkwrap
to ensure dependencies don't change between installations. Another reason is
that we develop on master and release on various branches. The way it works is
@@ -177,18 +177,4 @@ checked in to GitHub along with changes to `package.json`. With npm 5+ there is
also a `package-lock.json` file produced. During the shrinkwrap process this is
converted into the `npm-shrinkwrap.json` file.
1. Remove the NPM shrinkwrap and package-lock JSON files if they exists.
1. `rm -rf node_modules && npm install` and run tests to make sure a clean install works.
1. Determine whether we have a `patch` (bugfix), `minor` (feature), or `major` (breaking) release according to the principles of SemVer.
1. Update `package.json` with the appropriate new version.
1. Update the CHANGELOG/README with appropriate changes and submit for review as a PR, along with shrinkwrap and `package.json` changes. Wait for it to be merged, then pull it into the release branch.
1. Run `npm shrinkwrap` to generate the `npm-shrinkwrap.json`
1. Create a tag of the form `v<version>` on the release branch (usually a minor branch like `1.5` or `1.4`), with: `git tag -a v<version>`, e.g., `git tag -a v1.5.0`, `git tag -a v1.5.0-rc.1`. This is not necessary for beta versions.
1. Push the tag to upstream: `git push --tags <remote> <branch>`
1. Run `npm publish` (with `--tag rc` if this isn't a GA release).
1. Remove the NPM shrinkwrap JSON file from Git and push the changes
1. Update the site docs by going to https://github.com/appium/appium.io/pulls and merging the latest pull request that was opened by the Triager bot. Close any other pull requests opened by Triager bot.
1. Create a new release on GitHub: go to `https://github.com/appium/appium/releases/tag/v<VERSION>` and hit "Edit Tag". Make the release name `<VERSION>` (e.g., `2.0.5`), then paste in the changelog (but not the changelog header for this version). If it's a beta release, mark as pre-release.
1. Create a new post on discuss.appium.io announcing the release. Post it in the "News" category. Paste in the changelog and any choice comments. Pin it and unpin the previous release post.
1. Begin process of releasing `appium-desktop`.
1. Notify @jlipps to so he can tweet a link to the discuss post.
Follow directions in [Release Appium Doc](/docs/en/contributing-to-appium/release-appium.md)
@@ -0,0 +1,23 @@
# Releasing Appium
Appium follows the GitLab flow approach. Releases are made on release branches that have the format `releases/x.y` where `x` is a major version and `y` is a minor version. The main Appium repository doesn't strictly follow semver (unlike the dependencies of Appium). A minor release (e.g.: `1.20.0`) means that we're creating a new release that has a newly created set of dependencies that are shrinkwrapped to the latest. A patch release (e.g.: `1.20.4`) isn't strictly a "patch", but just means that we're making an intermediary release that brings in small changes. For example, suppose I have a new version of `appium-xcuitest-driver` that I want to publish and it can't wait until the next minor release. To bring in that change, I would checkout the release branch (e.g.: `git checkout releases/1.20`); install the dependency (`npm install appium-xcuitest-driver@version && git commit -a -m 'bump appium-xcuitest-driver to version $version`); release a "release candidate" (see below) and then when it's ready, graduate the "release candidate" to general availability
## Create a release branch
1. `bash ./scripts/release-branch.sh x.y` where `x` is the major version and `y` is the minor version (example: `bash ./scripts/release-branch.sh 1.20`)
* This will create:
* A release branch `releases/1.20`
* A git tag `v1.20.0-rc.0`
* Publish a NPM package `1.20.0-rc.0` as a release candidate
1. Create a changelog pull request
## Create a release candidate
1. Checkout the release branch (e.g.: `git checkout releases/1.21 && git pull origin releases/1.21`)
1. `bash ./scripts/release-candidate.sh rc`
## Publish to GA
1. Checkout the release branch (e.g.: `git checkout releases/1.21 && git pull origin releases/1.21`)
1. `bash ./scripts/release-candidate.sh latest`
1. Update the site docs by going to https://github.com/appium/appium.io/pulls and merging the latest pull request that was opened by the Triager bot. Close any other pull requests opened by Triager bot.
1. Create a new release on GitHub: go to `https://github.com/appium/appium/releases/tag/v<VERSION>` and hit "Edit Tag". Make the release name `<VERSION>` (e.g., `2.0.5`), then paste in the changelog (but not the changelog header for this version). If it's a beta release, mark as pre-release.
1. Create a new post on discuss.appium.io announcing the release. Post it in the "News" category. Paste in the changelog and any choice comments. Pin it and unpin the previous release post.
1. Begin process of releasing `appium-desktop`.
1. Notify @jlipps to so he can tweet a link to the discuss post.
+1 -28
View File
@@ -55,32 +55,6 @@ Reference](#TODO).
simulator may be open, and automated, at any given time. For multiple simulator
support, you will need to upgrade to the [XCUITest driver](ios-xcuitest.md)).
1. To allow the iOS simulator to be automated by Instruments, you need to
modify the authorization database for the system. Appium provides an easy
way to do this by installing and running an authorization script:
```
sudo authorize-ios
```
1. By default, Instruments-based automation is limited by the inclusion of
a 1-second hard-coded delay between commands, implemented for obscure
reasons by Apple's engineers. There is a way around this limitation called
[instruments-without-delay](https://github.com/facebookarchive/instruments-without-delay)
(IWD). IWD ships with Appium for Xcode versions < 7. For 7.x and up, IWD
must be installed manually by the user in advance of using Appium. The way
to do this is as follows:
* Clone the [appium-ios-driver](https://github.com/appium/appium-ios-driver)
repository.
* Inside the repo, run the `xcode-iwd.sh` script included in the `bin` dir,
passing it several arguments: (1) the path to the Xcode app you are
using. (2) The path to the appium-instruments directory. For example:
```
sh ./bin/xcode-iwd.sh /Applications/Xcode.app /Users/me/appium-instruments/
```
1. For best results, launch each simulator you wish to use and ensure the following:
* The soft keyboard is enabled (Command+K in the Simulator app)
@@ -163,8 +137,7 @@ $HOME/Library/Logs/CoreSimulator/*
### Running iOS tests using Jenkins
First download the `jenkins-cli.jar` and verify that the Mac successfully
connects to Jenkins master. Ensure you've run the `authorize-ios` command
mentioned above.
connects to Jenkins master.
```
wget https://jenkins.ci.cloudbees.com/jnlpJars/jenkins-cli.jar
+37
View File
@@ -0,0 +1,37 @@
## The Mac2Driver
Mac2Driver has been added to Appium since version 1.20.
This driver is for automating macOS applications using Apple's [XCTest](https://developer.apple.com/documentation/xctest) framework.
It provides more flexibility and features in comparison to the legacy
[MacDriver](mac.md) and is better compatible with operating system internals.
The driver operates in scope of [W3C WebDriver protocol](https://www.w3.org/TR/webdriver/) with several custom extensions to cover operating-system specific scenarios.
The original idea and parts of the source code are borrowed from the Facebook's [WebDriverAgent](https://github.com/facebookarchive/WebDriverAgent) project.
Development of the Mac2Driver happens at the
[appium-mac2-driver](https://github.com/appium/appium-mac2-driver) repo.
### Requirements and Support
In addition to Appium's general requirements:
- macOS 10.15 or later
- Xcode 12 or later should be installed
- Xcode Helper app should be enabled for Accessibility access. The app itself could be usually found at `/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/Xcode Helper.app`. In order to enable Accessibility access for it simply open the parent folder in Finder: `open /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/` and drag & drop the `Xcode Helper` app to `Security & Privacy -> Privacy -> Accessibility` list of your `System Preferences`. This action must only be done once.
- [Carthage](https://github.com/Carthage/Carthage) should be present. On macOS the utility could be installed via [Brew](https://brew.sh/): `brew install carthage`
### Usage
The way to start a session using the Mac2Driver is to include the
`automationName` capability in your new session request, with
the value `Mac2`. Of course, you must also include appropriate
`platformName` (only `Mac` is supported). Read
[Mac2Driver documentation](https://github.com/appium/appium-mac2-driver/blob/master/README.md)
for more details.
### Capabilities
The list of available driver capabilities could be found in
the driver [README](https://github.com/appium/appium-mac2-driver/blob/master/README.md) file.
+6 -1
View File
@@ -274,7 +274,12 @@ Driver](/docs/en/drivers/ios-uiautomation.md).
### MacDriver Only
(For MacDriver capabilities, please refer to the documentation on the [Appium Mac Driver repo](https://github.com/appium/appium-mac-driver#desired-capabilities) itself.)
(For MacDriver capabilities, please refer to the documentation on the [Appium MacDriver repo](https://github.com/appium/appium-mac-driver#desired-capabilities) itself.)
### Mac2Driver Only
(For Mac2 Driver capabilities, please refer to the documentation on the [Appium Mac2Driver repo](https://github.com/appium/appium-mac2-driver#capabilities) itself.)
### You.i Engine Only
+2
View File
@@ -20,6 +20,7 @@ module.exports = {
['Safari (Mac/iOS)', 'safari.md'],
['Gecko (Firefox)', 'gecko.md'],
['Mac', 'mac.md'],
['Mac2', 'mac2.md'],
]],
['Commands', ['commands',
['Status', 'status.md'],
@@ -317,6 +318,7 @@ module.exports = {
['Appium Style Guide', 'style-guide.md'],
['How to Write Docs', 'how-to-write-docs.md'],
['Appium Package Structure', 'appium-packages.md'],
['Release Appium', 'release-appium.md'],
['Credits', 'credits.md']]]
],
cn: [
+5
View File
@@ -33,6 +33,7 @@ const AUTOMATION_NAMES = {
INSTRUMENTS: 'Instruments',
WINDOWS: 'Windows',
MAC: 'Mac',
MAC2: 'Mac2',
FLUTTER: 'Flutter',
SAFARI: 'Safari',
GECKO: 'Gecko',
@@ -70,6 +71,10 @@ const DRIVER_MAP = {
driverClassName: 'MacDriver',
driverPackage: 'appium-mac-driver',
},
[AUTOMATION_NAMES.MAC2.toLowerCase()]: {
driverClassName: 'Mac2Driver',
driverPackage: 'appium-mac2-driver',
},
[AUTOMATION_NAMES.ESPRESSO.toLowerCase()]: {
driverClassName: 'EspressoDriver',
driverPackage: 'appium-espresso-driver',
+6 -2
View File
@@ -130,13 +130,17 @@ async function main (args = null) {
await logStartupInfo(parser, args);
let appiumDriver = new AppiumDriver(args);
let routeConfiguringFunction = makeRouter(appiumDriver);
let server = await baseServer({
const serverOpts = {
routeConfiguringFunction,
port: args.port,
hostname: args.address,
allowCors: args.allowCors,
basePath: args.basePath,
});
};
if (args.keepAliveTimeout) {
serverOpts.keepAliveTimeout = args.keepAliveTimeout * 1000;
}
let server = await baseServer(serverOpts);
if (args.allowCors) {
logger.warn('You have enabled CORS requests from any host. Be careful not ' +
'to visit sites which could maliciously try to start Appium ' +
+9
View File
@@ -66,6 +66,15 @@ const args = [
'on this server'
}],
[['-ka', '--keep-alive-timeout'], {
required: false,
default: null,
dest: 'keepAliveTimeout',
type: 'int',
help: 'Number of seconds the Appium server should apply as both the keep-alive timeout ' +
'and the connection timeout for all requests. Defaults to 600 (10 minutes).'
}],
[['-ca', '--callback-address'], {
required: false,
dest: 'callbackAddress',
+16656
View File
File diff suppressed because it is too large Load Diff
+6 -7
View File
@@ -11,7 +11,7 @@
"firefoxos",
"testing"
],
"version": "1.20.0-beta.0",
"version": "1.20.2",
"author": "https://github.com/appium",
"license": "Apache-2.0",
"repository": {
@@ -27,8 +27,7 @@
},
"main": "./build/lib/main.js",
"bin": {
"appium": "./build/lib/main.js",
"authorize-ios": "./node_modules/.bin/authorize-ios"
"appium": "./build/lib/main.js"
},
"directories": {
"lib": "./lib",
@@ -50,12 +49,13 @@
"appium-geckodriver": "^0.3.0",
"appium-ios-driver": "4.x",
"appium-mac-driver": "1.x",
"appium-mac2-driver": "^0",
"appium-safari-driver": "^2.1.0",
"appium-support": "2.x",
"appium-tizen-driver": "^1.1.1-beta.4",
"appium-uiautomator2-driver": "^1.37.1",
"appium-uiautomator2-driver": "^1.61.2",
"appium-windows-driver": "1.x",
"appium-xcuitest-driver": "^3.27.6",
"appium-xcuitest-driver": "^3.33.1",
"appium-youiengine-driver": "^1.2.0",
"argparse": "^2.0.1",
"async-lock": "^1.0.0",
@@ -95,8 +95,7 @@
"generate-docs": "node ./build/commands-yml/parse.js",
"zip": "zip -qr appium.zip .",
"upload": "gulp github-upload",
"zip-and-upload": "npm run zip && npm run upload",
"authorize-ios": "authorize-ios"
"zip-and-upload": "npm run zip && npm run upload"
},
"pre-commit": [
"precommit-msg",
+13
View File
@@ -0,0 +1,13 @@
git fetch
echo "* Creating release branch $1"
git checkout -b releases/$1
rm -rf node_modules/ npm-shrinkwrap.json package-lock.json
npm install
npm shrinkwrap
echo "* git add ."
git add npm-shrinkwrap.json package.json
git commit -m 'add shrinkwrap'
echo "* npm version $1.0-rc.0"
npm version $1.0-rc.0
git push origin releases/$1
bash ./scripts/release-candidate.sh
+4
View File
@@ -0,0 +1,4 @@
npm version prerelease --preid=$1
git push
git push --tags
npm publish --tag $1