Skip to content

Conversation

KazuCocoa
Copy link
Member

Will update the naming, but let me create a PR as a draft

background: https://github.com/appium/appium-desktop/issues/1335
send_keys by some selenium bindings send a local file binary if the given string is a file.
But https://github.com/appium/appium-desktop/issues/1335 has a use case won't send a local file even if the given string is a local path.

self._execute(Command.SET_IMMEDIATE_VALUE, data)
return self

def send_keys_direct(self, *value):
Copy link
Contributor

@mykola-mokhnach mykola-mokhnach Apr 11, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather override the original selenium's implementation of send_keys. We don't support sending files in neither of Appium drivers.

Copy link
Member Author

@KazuCocoa KazuCocoa Apr 11, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hm, for mobile browser, too? I considered browser cases. (I know we don't support it for native apps)

I found Ruby binding handled the behaviour with a flag, so I wondered if we also do a similar thing for send_keys if mobile safari/chrome can work as same as desktop browser.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Safari mobile driver for sure does not support local files upload. Let me check chromedriver sources

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chromedriver handles the path inside sendKeys handler: https://github.com/bayandin/chromedriver/blob/47f9916496782bf8c1a031a3c1f1f0c7cf654da1/element_commands.cc#L452

This means there is also no need to modify/patch the call on the client side

Copy link
Contributor

@mykola-mokhnach mykola-mokhnach Apr 11, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've never declared file upload support anyway: appium/appium#13156

However, in case of mobile Chromedriver (at least according to what is present in its code) it might be possible to provide a remote file path into sendKeys endpoint and in case the target input is of type file and the remote path exists (the file must be uploaded to the device and located somewhere, where it would accessible for the browser's or webview owner's process) the feature should work

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it 👍
Thanks for the investigation

@KazuCocoa KazuCocoa changed the title [wip] add send_keys_direct feat: add send_keys_direct Apr 11, 2020
@KazuCocoa KazuCocoa changed the title feat: add send_keys_direct feat: Override send_keys without file upload function Apr 11, 2020
@KazuCocoa KazuCocoa marked this pull request as ready for review April 11, 2020 15:28
Returns:
`appium.webdriver.webelement.WebElement`
"""
_value = keys_to_typing(value)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how about _value -> keys?

@KazuCocoa KazuCocoa merged commit 34427a1 into appium:master Apr 12, 2020
@KazuCocoa KazuCocoa deleted the add-sendkeys-witout-filedetector branch April 12, 2020 02:22
ki4070ma added a commit that referenced this pull request Apr 26, 2020
* Update pytest-cov requirement from ~=2.6 to ~=2.8 (#489)

Updates the requirements on [pytest-cov](https://github.com/pytest-dev/pytest-cov) to permit the latest version.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](pytest-dev/pytest-cov@v2.6.0...v2.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Update autopep8 requirement from ~=1.4 to ~=1.5 (#490)

Updates the requirements on [autopep8](https://github.com/hhatto/autopep8) to permit the latest version.
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](hhatto/autopep8@v1.4...v1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Update tox-travis requirement from ~=0.11 to ~=0.12 (#491)

Updates the requirements on [tox-travis](https://github.com/tox-dev/tox-travis) to permit the latest version.
- [Release notes](https://github.com/tox-dev/tox-travis/releases)
- [Changelog](https://github.com/tox-dev/tox-travis/blob/master/HISTORY.rst)
- [Commits](tox-dev/tox-travis@0.11...0.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Update tox requirement from ~=3.6 to ~=3.14 (#494)

Updates the requirements on [tox](https://github.com/tox-dev/tox) to permit the latest version.
- [Release notes](https://github.com/tox-dev/tox/releases)
- [Changelog](https://github.com/tox-dev/tox/blob/master/docs/changelog.rst)
- [Commits](tox-dev/tox@3.6.0...3.14.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* chore: Fix find_by_images_tests.py (#495)

* chore: Fix find_by_images_tests.py

* Add installation opencv4nodejs

* Fix typo

* Add taking screen record to find_by_image_test

* Fix errors on the emulator

* Remove unused imports

* feat: Add viewmatcher (#480)

* Add android view matcher as strategy locator

* Add docstring

* Add functional test

* Remove find_elements_by_android_data_matcher

* Fix docstring

* tweak docstring

* Bump 0.50

* Update changelog for 0.50

* Fix flaky functional tests (#473)

* Run all tests

* Fix apk file path

* Skip find_element_by_image test cases

* Skip context switching test

* Skip multi tap test on CI

* Change strategy for waiting element

* Add functions for same steps

* Restore unexpected changes

* Fix touch_action_tests

* Fix

* Fix
Fix test_driver_swipe

* fix

* Create _move_to_[target_view]

* [test_driver_swipe] Add wait

* feat: Add idempotency key header to create session requests (#514)

* feat: Override send_keys without file upload function (#515)

* add send_keys_direct

* override send_keys

* tune

* add unittest instead of functional test

* tweak syntax

* Bump 0.51

* Update changelog for 0.51

* test: Fix test_clear flaky functional test (#519)

* test: Add unit test for set_value (setImmediateValue) (#518)

* chore: Fix int - str comparison error in ios desired capabilities (#517)

if number >= PytestXdistWorker.COUNT:

TypeError: '>=' not supported between instances of 'int' and 'str'

2. Updated test case path and iPhone model in Readme file

* fix: Handling of dictionary-values in WebElement.get_attribute() (#521)

* Bump 0.52

* Update changelog for 0.52

* Fix mypy error

* tweak

* Add wait to test

* Skip tap_twice test

* review comments

* Remove unnecessary import

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>
Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
Co-authored-by: Nrupesh Patel <nrupesh.patel2912@gmail.com>
Co-authored-by: Venkatesh <venkatesh@poshmark.com>
Co-authored-by: Hannes Hauer <hanneshauer@beeware.at>
ki4070ma added a commit that referenced this pull request Apr 30, 2020
* Drop py2 support (#478)

* Drop py2 support

* Support 3.7+

* Add explicit type declarations (#482)

* Fixed mypy warning: touch_action.py

* Fixed mypy warning: multi_action.py

* Fixed mypy warning: extensions/android

* Fixed mypy warning: extensions/search_context

* Updated

* Revert some changes to run unit test

* Review comments

* Updates

* Updates

* Add mypy check to ci.sh

* Add mypy to Pipfile

* Updates

* Update README

* Revert unexpected changes

* Updates Dict

* Revert unexpected changes

* Updates

* Review comments

* Review comments

* tweak

* Restore and modify changes

* Fix wrong return type

* Add comments

* Revert unexpected changes

* Fix mypy error

* updates

* Add mypy to pre-commit (#485)

* chore: Applied some py3 formats (#486)

* Removed unused import

* Removed unnecessary codes

* Applied f'' format instead ''.format()

* Fixes

* tweak

* chore: Fix mypy errors under test folder (#487)

* Fix mypy errors under test folder

* Add mypy check for test folder to pre-commit

* Add mypy check to ci

* chore: Remove unittest dependency (#488)

* Removed unnecessary codes from calling super

* Removed unittest dependency

* Upgrade the dependencies to the latest

* Removed unused args

* Review comments

* Update mock requirement from ~=3.0 to ~=4.0 (#502)

Updates the requirements on [mock](https://github.com/testing-cabal/mock) to permit the latest version.
- [Release notes](https://github.com/testing-cabal/mock/releases)
- [Changelog](https://github.com/testing-cabal/mock/blob/master/CHANGELOG.rst)
- [Commits](testing-cabal/mock@3.0.0...4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Add 'from' to except (#503)

* Update pre-commit requirement from ~=1.21 to ~=2.1 (#506)

Updates the requirements on [pre-commit](https://github.com/pre-commit/pre-commit) to permit the latest version.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md)
- [Commits](pre-commit/pre-commit@v1.21.0...v2.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* doc: Add script to generate sphinx doc  (#508)

* Add quickstart template files

* Update conf file

* Update

* Update settings

* Change project name

* Add script to generate docs

* Changed header title

* Add new line to usage section

* Add py.typed file(PEP561)

* Replace \n with new line

* tweak

* Use sphinx format for tables

* Rebase python3 branch with master (#522)

* Update pytest-cov requirement from ~=2.6 to ~=2.8 (#489)

Updates the requirements on [pytest-cov](https://github.com/pytest-dev/pytest-cov) to permit the latest version.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](pytest-dev/pytest-cov@v2.6.0...v2.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Update autopep8 requirement from ~=1.4 to ~=1.5 (#490)

Updates the requirements on [autopep8](https://github.com/hhatto/autopep8) to permit the latest version.
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](hhatto/autopep8@v1.4...v1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Update tox-travis requirement from ~=0.11 to ~=0.12 (#491)

Updates the requirements on [tox-travis](https://github.com/tox-dev/tox-travis) to permit the latest version.
- [Release notes](https://github.com/tox-dev/tox-travis/releases)
- [Changelog](https://github.com/tox-dev/tox-travis/blob/master/HISTORY.rst)
- [Commits](tox-dev/tox-travis@0.11...0.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Update tox requirement from ~=3.6 to ~=3.14 (#494)

Updates the requirements on [tox](https://github.com/tox-dev/tox) to permit the latest version.
- [Release notes](https://github.com/tox-dev/tox/releases)
- [Changelog](https://github.com/tox-dev/tox/blob/master/docs/changelog.rst)
- [Commits](tox-dev/tox@3.6.0...3.14.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* chore: Fix find_by_images_tests.py (#495)

* chore: Fix find_by_images_tests.py

* Add installation opencv4nodejs

* Fix typo

* Add taking screen record to find_by_image_test

* Fix errors on the emulator

* Remove unused imports

* feat: Add viewmatcher (#480)

* Add android view matcher as strategy locator

* Add docstring

* Add functional test

* Remove find_elements_by_android_data_matcher

* Fix docstring

* tweak docstring

* Bump 0.50

* Update changelog for 0.50

* Fix flaky functional tests (#473)

* Run all tests

* Fix apk file path

* Skip find_element_by_image test cases

* Skip context switching test

* Skip multi tap test on CI

* Change strategy for waiting element

* Add functions for same steps

* Restore unexpected changes

* Fix touch_action_tests

* Fix

* Fix
Fix test_driver_swipe

* fix

* Create _move_to_[target_view]

* [test_driver_swipe] Add wait

* feat: Add idempotency key header to create session requests (#514)

* feat: Override send_keys without file upload function (#515)

* add send_keys_direct

* override send_keys

* tune

* add unittest instead of functional test

* tweak syntax

* Bump 0.51

* Update changelog for 0.51

* test: Fix test_clear flaky functional test (#519)

* test: Add unit test for set_value (setImmediateValue) (#518)

* chore: Fix int - str comparison error in ios desired capabilities (#517)

if number >= PytestXdistWorker.COUNT:

TypeError: '>=' not supported between instances of 'int' and 'str'

2. Updated test case path and iPhone model in Readme file

* fix: Handling of dictionary-values in WebElement.get_attribute() (#521)

* Bump 0.52

* Update changelog for 0.52

* Fix mypy error

* tweak

* Add wait to test

* Skip tap_twice test

* review comments

* Remove unnecessary import

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>
Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
Co-authored-by: Nrupesh Patel <nrupesh.patel2912@gmail.com>
Co-authored-by: Venkatesh <venkatesh@poshmark.com>
Co-authored-by: Hannes Hauer <hanneshauer@beeware.at>

* chore: Update readme and gitchangelog section role (#524) (#525)

* chore: tweak changelog filter

* address stoping Python 2 support

* 2 instead of 2.0...

* tweak readme

* Revert some unexpected changes

* review comments

* Changed bound for TypeVar

* Fix crashing ci

* Remove beta

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>
Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
Co-authored-by: Nrupesh Patel <nrupesh.patel2912@gmail.com>
Co-authored-by: Venkatesh <venkatesh@poshmark.com>
Co-authored-by: Hannes Hauer <hanneshauer@beeware.at>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants