Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

execute script with arguments not work #619

Open
bswhb opened this issue Mar 18, 2020 · 0 comments
Open

execute script with arguments not work #619

bswhb opened this issue Mar 18, 2020 · 0 comments

Comments

@bswhb
Copy link

bswhb commented Mar 18, 2020

Hi there,
I was trying to simulate a button click with JS in an Android WebView application, and found out the same script can not work on wd. Here's the code:

    const js = 'var el=arguments[0];el.click();'
    await webdriver.execute(js, [clickableElement])

Here's the appium console output:

[HTTP] --> POST /wd/hub/session/8a880501-e737-4241-bd9f-748df49f7cdc/execute
[HTTP] {"script":"var el=arguments[0];el.click();","args":[{"ELEMENT":"74f110ed-ff58-4b2f-82b8-933b5d78ff38"}]}
[MJSONWP (8a880501)] Driver proxy active, passing request on via HTTP proxy
[debug] [WD Proxy] Matched '/wd/hub/session/8a880501-e737-4241-bd9f-748df49f7cdc/execute' to command name 'execute'
[Protocol Converter] Rewrote the original URL '/wd/hub/session/8a880501-e737-4241-bd9f-748df49f7cdc/execute' to '/wd/hub/session/8a880501-e737-4241-bd9f-748df49f7cdc/execute/sync' for W3C protocol
[debug] [WD Proxy] Proxying [POST /wd/hub/session/8a880501-e737-4241-bd9f-748df49f7cdc/execute/sync] to [POST http://127.0.0.1:8000/wd/hub/session/bb5286b26ad42d34aa736dab637db5de/execute/sync] with body: {"script":"var el=arguments[0];el.click();","args":[{"ELEMENT":"74f110ed-ff58-4b2f-82b8-933b5d78ff38"}]}
[WD Proxy] Got an unexpected response with status 500: {"value":{"error":"javascript error","message":"javascript error: el.click is not a function\n  (Session info: chrome=80.0.3987.132)","stacktrace":"Backtrace:\n\tOrdinal0 [0x010D0C83+1707139]\n\tOrdinal0 [0x010368F1+1075441]\n\tOrdinal0 [0x00FADFC9+516041]\n\tOrdinal0 [0x00FAFC75+523381]\n\tOrdinal0 [0x00FAFB64+523108]\n\tOrdinal0 [0x00FB022D+524845]\n\tOrdinal0 [0x00F6392B+211243]\n\tOrdinal0 [0x00F59E9D+171677]\n\tOrdinal0 [0x00F630F4+209140]\n\tOrdinal0 [0x00F59D4B+171339]\n\tOrdinal0 [0x00F41D4A+73034]\n\tOrdinal0 [0x00F42DC0+77248]\n\tOrdinal0 [0x00F42D59+77145]\n\tOrdinal0 [0x0104BB67+1162087]\n\tGetHandleVerifier [0x0116A966+508998]\n\tGetHandleVerifier [0x0116A6A4+508292]\n\tGetHandleVerifier [0x0117F7B7+594583]\n\tGetHandleVerifier [0x0116B1D6+511158]\n\tOrdinal0 [0x0104402C+1130540]\n\tOrdinal0 [0x0104D4CB+1168587]\n\tOrdinal0 [0x0104D633+1168947]\n\tOrdinal0 [0x01065B35+1268533]\n\tBaseThreadInitThunk [0x760A6359+25]\n\tRtlGetAppContainerNamedObjectPath [0x77AA7B74+228]\n\tRtlGetAppContainerName...
[debug] [MJSONWP (8a880501)] Encountered internal error running command: ProxyRequestError: Could not proxy command to remote server. Original error: 500 - {"value":{"error":"javascript error","message":"javascript error: el.click is not a function\n  (Session info: chrome=80.0.3987.132)","stacktrace":"Backtrace:\n\tOrdinal0 [0x010D0C83+1707139]\n\tOrdinal0 [0x010368F1+1075441]\n\tOrdinal0 [0x00FADFC9+516041]\n\tOrdinal0 [0x00FAFC75+523381]\n\tOrdinal0 [0x00FAFB64+523108]\n\tOrdinal0 [0x00FB022D+524845]\n\tOrdinal0 [0x00F6392B+211243]\n\tOrdinal0 [0x00F59E9D+171677]\n\tOrdinal0 [0x00F630F4+209140]\n\tOrdinal0 [0x00F59D4B+171339]\n\tOrdinal0 [0x00F41D4A+73034]\n\tOrdinal0 [0x00F42DC0+77248]\n\tOrdinal0 [0x00F42D59+77145]\n\tOrdinal0 [0x0104BB67+1162087]\n\tGetHandleVerifier [0x0116A966+508998]\n\tGetHandleVerifier [0x0116A6A4+508292]\n\tGetHandleVerifier [0x0117F7B7+594583]\n\tGetHandleVerifier [0x0116B1D6+511158]\n\tOrdinal0 [0x0104402C+1130540]\n\tOrdinal0 [0x0104D4CB+1168587]\n\tOrdinal0 [0x0104D633+1168947]\n\tOrdinal0 [0x01065B35+1268533]\n\tBaseThreadInitThunk [0x760A6359+25]\n\tRtlGetAppContainerNamedObjectPath [0x77AA7B74+228]\n\tRtlGetAppContainerNamedObjectPath [0x77AA7B44+180]\n"}}
[debug] [MJSONWP (8a880501)]     at JWProxy.proxy (C:\Users\bswhb\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:222:13)
[debug] [W3C] Matched W3C error code 'javascript error' to JavaScriptError

But the same script can work on the Java client of Appium, and I found the difference is Java will pass two arguments which looks like below:

[HTTP] {"script":"arguments[0].click();","args":[{"ELEMENT":"576bd040-ce6b-4fdf-92d8-072b10e4a599","element-6066-11e4-a52e-4f735466cecf":"576bd040-ce6b-4fdf-92d8-072b10e4a599"}]}

The 2nd argument has the key to the id of the element to click, that is element-6066-11e4-a52e-4f735466cecf.

Kindly please advise why the commands are different, and how to fix it, thanks a lot!

Best regards,
Hanbo

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

No branches or pull requests

1 participant