javascript - 我可以将 JavascriptExecutor 与 Appium 一起使用吗?

标签 javascript java selenium appium

我正在尝试使用 Appium 单击某个移动元素 ( JavascriptExecutor ) .
它抛出org.openqa.selenium.WebDriverException :
(见下文)
我的代码非常简单。
JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", element);
element以上就可以了。
所以我的问题是:
我可以使用 JavascriptExecutorAppium移动元素,如果是的话 - 我应该使用 JavascriptExecutor 更改什么?

unknown error (An unknown server-side error occurred. status='false'. Failed to complete internal method: 'hybridRunJavascript args: [, 0, result = null;resultType = null;resultMessage = null;function getPathToWithSuffix(element,suffix) {if (element.tagName.toUpperCase() == "HTML".toUpperCase())return '//html'+suffix;if (element===document.body)return '//html/body[1]'+suffix;var ix= 0;var siblings= element.parentNode.childNodes;for (var i= 0; i<siblings.length; i++) {var sibling= siblings[i];if (sibling===element)return getPathToWithSuffix(element.parentNode,'/'+element.tagName.toLowerCase()+'['+(ix+1)+']'+suffix);if (sibling.nodeType===1 && sibling.tagName===element.tagName)ix++;}}function runScriptResultWrapper(element){if((typeof element === undefined) || element == null){result = null;resultMessage = null;return;}else if (typeof element === 'string' || element instanceof String){result = element;resultType = "string";resultMessage = null;return;}else if (typeof element === 'number' || element instanceof Number){if(element % 1 === 0){resultType = "int"}else{resultType = "float";}result = element;resultMessage = null;return;}else if (typeof element === 'boolean' || element instanceof Boolean){resultType = "boolean";result = element;resultMessage = null;return;}var paths = [];if(element.constructor === Array || element.length > 0){var elements = element;for (i = 0; i < elements.length; i++) {var elementPath = getPathToWithSuffix(elements[i],"");paths[i] = elementPath;}resultMessage = null;}else if(!element.parentNode){resultType = "object";result = element;resultMessage = null;return;}else{resultMessage = null;paths[0] = getPathToWithSuffix(element,"");}resultType = null;result = {value: paths};};var userFunc = function() {var arguments = new Array();arguments[0]=document.evaluate("(//*[@resource-id='text' or @id='text'])[1]", document, null, XPathResult.ANY_TYPE, null).iterateNext();;arguments[0].click();;};result = null;var temp_result = userFunc();if(result == null) {result = temp_result;} runScriptResultWrapper(result);]', details: Failed to run javascript '': null) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 0 milliseconds

最佳答案

Appium您可以使用executeScript() method仅适用于运行Mobile Commands

喜欢:

Map<String, Object> params = new HashMap<>();
params.put("direction", "down");
params.put("element", ((RemoteWebElement) element).getId());
driver.executeScript("mobile: swipe", params);

所以我的期望是你应该使用 element.click() method反而。

如果您遇到“正常”点击问题 - 您可以考虑使用 SeeTest - Appium Extension Click command它可以执行多次单击并使用 OCR 定位元素

关于javascript - 我可以将 JavascriptExecutor 与 Appium 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56755128/

相关文章:

javascript - 钛合金陀螺仪值

javascript - 如何使用 javascript 显示来自 parse.com 数据库的图像?

java - 在azure Rest API调用中,在同一虚拟机的不同API中获取不同的数据磁盘ID?

java - 如何动态获取Hibernate对象关系?

java - 将远程机器注册为节点在网格控制台上提供连接超时

google-chrome - Selenium Chrome headless (headless) : Unable to receive message from renderer

javascript - 从 javascript 客户端调用 javascript 适配器会收到 415 Unsupported Media Type 响应

java - R.java/Refresh/Clean 不更新图像

java - 提取具有相同类名的表数据

javascript - 如何在 Angular 中处理 LocalDateTime 后端响应