问题标签 [selendroid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 使用带有 WebDriver 的 Selendroid 在 Android 模拟器中获取 StaleElementReferenceException
我正在使用 Selenium WebDriver 和 Selendroid 在 Android 模拟器中进行自动化测试,我遇到了一个如下所述的问题:-
在我的应用程序中,我有一个选择元素,其中包含将网页更改为另一个页面的选项,这里 Selenium WebDriver 在选择它时抛出异常。
示例页面:
下面是我从下拉框中选择值的代码:
org.openqa.selenium.StaleElementReferenceException:{“消息”:“缓存中不存在元素”} io.selendroid.exceptions.StaleElementReferenceException:{“消息”:“缓存中不存在元素”} 在 io.selendroid.server.model.SelendroidWebDriver.executeAtom(SelendroidWebDriver.java:195) 在 io.selendroid.server.model.SelendroidWebDriver.executeAtom(SelendroidWebDriver.java:167) 在 io.selendroid.server.model.AndroidWebElement.getLocation (AndroidWebElement.java:183) 在 io.selendroid.server.model.AndroidWebElement.getCenterCoordinates(AndroidWebElement.java:216) 在 io.selendroid.server.model.AndroidWebElement.click(AndroidWebElement.java:249) 在 io.selendroid。 server.handler.ClickElement.handle(ClickElement.java:43) at io.selendroid.server.AndroidServlet.handleRequest(AndroidServlet.java:236) at io.selendroid.server.BaseServlet.handleHttpRequest(BaseServlet.java:70) at org .webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) 在 org.webbitserver.netty.NettyHttpControl。nextHandler(NettyHttpControl.java:62) at io.selendroid.server.inspector.InspectorServlet.handleHttpRequest(InspectorServlet.java:78) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) at org.webbitserver.netty .NettyHttpControl.nextHandler(NettyHttpControl.java:62) 位于 org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) 的 org.webbitserver.handler.PathMatchHandler.handleHttpRequest(PathMatchHandler.java:33)。 netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62) 在 org.webbitserver.handler.DateHeaderHandler.handleHttpRequest(DateHeaderHandler.java:21) 在 org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) 在 org.webbitserver org.webbitserver 上的 .netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62)。handler.ServerHeaderHandler.handleHttpRequest(ServerHeaderHandler.java:25) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:67) at org.webbitserver .netty.NettyHttpChannelHandler$2.run(NettyHttpChannelHandler.java:72) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)在 java.lang.Thread.run(Thread.java:856)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 在 java.lang.Thread 的 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 运行 (NettyHttpChannelHandler.java:72) .run(Thread.java:856)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 在 java.lang.Thread 的 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 运行 (NettyHttpChannelHandler.java:72) .run(Thread.java:856)
谁能帮我解决这个问题?
提前致谢!!
java - 如何在 WebDriverWait 超时之前添加日志
我使用 selendroid 来测试混合应用程序。我有自己的记录器,它记录并使用 WebDriverWait 来等待特定行为。我的问题是如何在 WebDriverWait 失败并抛出 timeoutException 之前使用我的记录器?
android - 如何处理来自 Selendroid 的 android.ui.seekbar.TwowaySeekbar
请告诉我如何处理来自 selendroid 的这种元素类型。以下是元素的xml设计:
提前致谢。
android - Selendroid - 处理本机回调的最佳方法是什么?
我正在使用 Selenium 和 Selendroid 来测试我的混合应用程序。我的应用程序包含本机部分和 WebView。在 WebView 我执行 ajax 调用,监听异步事件(使用 PostMessage)。
我的问题是:我想将我的 Selendroid 测试(我正在使用 Java)连接到 WebView 回调。意思是我想在我的 Selendroid 测试中了解我在 WebView 中得到的事件。例如,我希望我的测试等到在 WebView 中(在 JavaScript 代码中)接收到一个事件。
在我的本机应用程序中,我使用 addJavascriptInterface 来连接我的本机部分和 WebView,因此我的本机应用程序知道这些事件。如何将这些事件传递给测试代码?
我的第一次尝试是在我的原生部分中添加 EditText,当在 webview 中收到任何事件时,原生部分会通过 JavaScriptInterface 通知更新此 EditText。然后我试图等到元素中出现文本(使用 wait.until(ExpectedConditoins.textToBePresentInElement(...)) )但问题是 WebView 已打开并隐藏了本机 EditText 视图所以我实际上不能监听 EditText 的变化和我的测试出错。
我的第二次尝试是创建一个日志文件并将本机的每个日志写入该文件。然后在测试代码中连接到该文件并等待显示新行。问题是我不知道我是否可以,以及如何做到这一点。
我的问题是,在测试代码中了解 WebView 内 JavaScript 代码中收到的事件的最佳方法是什么。
appium - 如何将 selendroid 与 appium 一起使用
我有一个 java maven 项目,它使用 appium 在真实设备中运行本机应用程序的测试。我正在尝试将 selendroid 与 appium 一起使用。我在 appium 中将能力自动化名称设置为 selendroid,并将 selendroid 端口设置为 8080。我的应用程序正在启动,但单击或点击不起作用。我还需要设置什么吗。以下是来自appium的错误和代码
代码:
android - 使用 Selendroid 选择模拟器
我在运行 Selendroid 时尝试选择模拟器并找到了这个标志
-emulatorPort "指定开始运行模拟器的端口号。"
由于我有两个模拟器正在运行,因此我想在运行测试时选择其中一个。因此,我在启动 selendroid 时使用该标志
我写的测试代码以此开头
但是现在当我运行测试时它崩溃了
似乎 id 没有使用“-s emulator-5554”选择正确的模拟器,这是一个错误还是我完全误解了标志“-emulatorPort”。如果我关闭其中一个模拟器,一切正常。
还是我必须使用Selendroid Grid,这对于我正在尝试做的事情来说似乎有点过头了。
java - Selendroid 检查是否显示弹出错误
我无法检测是否在原生 android 应用上显示弹出窗口。场景如下:
我开始创建工单并开始添加产品,但有时当我添加产品时,我会收到一条错误消息,提示我无法添加该产品(这是正确的)。问题是,每次我尝试添加产品时,我都需要检查是否显示了该错误。以下是我迄今为止尝试过的事情:
但是当我运行测试时,上述方法都不起作用,有时它会卡住验证。任何帮助,将不胜感激。
java - 设置测试自动化框架 Selendroid 的问题
我在设置 Selendroid 服务器时遇到问题。当我运行命令时java -jar selendroid-standalone-0.11.0-with-dependencies.jar -app selendroid-test-app-0.11.0.apk
,出现以下错误:
我认为这个问题与 java 或 android 环境变量有关。我已经阅读了很多指南和论坛帖子并尝试了不同的方法,但我总是得到相同的结果。环境变量当前以下列方式设置:在“用户变量”下:
ANDROID_HOME: C:\Users\mawal2\Documents\android\adt-bundle-windows-x86_64-20140702\sdk
JAVA_HOME: C:\Program Files\Java\jdk1.8.0_20\bin
在“系统变量”下:
- 路径:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Windows\CCM;C:\Program Files\OpenVPN\bin; C:\Users\mawal2\Documents\android\adt-bundle-windows-x86_64-20140702\sdk\tools\;C:\Users\mawal2\Documents\android\adt-bundle-windows-x86_64-20140702\sdk\platform -tools\;C:\Program Files\Java\jdk1.8.0_20\bin\;
我的操作系统是 Windows 8.1 企业版
非常感谢我能得到的所有帮助!
最好的问候马格努斯
java - Selendroid 没有启动虚拟设备
我正在尝试开始使用用于 android 虚拟设备的 selendroid 和 selenium,但我遇到了一些问题。我已经安装了所有的 java/android sdk/eclipse 软件,我可以很好地运行 selenium chromedriver 测试。但是,当我尝试运行启动 android 虚拟设备的测试时,它永远不会启动并且应用程序不会在http://localhost:4444/wd/hub/status
页面中列出。
我的通用测试如下。如果我在下面运行此代码,服务器将启动,我可以从状态页面看到我的本地主机数据,但我的应用程序版本没有列出。如果我运行,java -jar selendroid-standalone-0.11.0-with-dependencies.jar -app selendroid-test-app-0.11.0.apk
那么我可以在状态页面中看到我的应用程序。我已经尝试过在虚拟设备上预加载应用程序,并在虚拟设备上使用签名应用程序,但都没有工作。
我几乎处于死胡同,因为还有其他地方可以寻找解决方案。我花了 3-4 天寻找解决方案,但似乎找不到。目前在 java 项目中,我只加载了 selenium 和 selendroid .jar 文件依赖项。我还没有安装任何 jUnit 或任何相关的“测试”
ios - 使用 Selenium 和 ios-driver 从 Windows 机器测试 iOS 移动应用程序
我正在研究使用 Selenium for Windows(仅限 Web)、Android 和 iOS 移动设备(例如 iPad)测试本机、混合和基于 Web 的应用程序的可行性。
测试人员的理想设置是一台带有通过 USB 连接的物理设备的 Windows 机器。这适用于 Android,因为只需要Selendroid的独立服务器和 JAR 依赖项(不包括 ADK 和 USB 驱动程序设置)。但是,据我了解,这对于使用ios-driver的 iOS 移动设备是不可能的。我还检查了Appium,他们也声明需要一台 Mac 计算机来测试 iOS 设备。
所以这给我们带来了我的问题:有没有办法从 Windows 机器测试 iOS 移动应用程序(网络、混合、本机)?
以下是首选项列表:
- 使用 Selenium 和其他与 Selenium 兼容的插件
- 从 Windows 机器运行测试
- 不能使用 iOS VM
- 不能使用带有“中间人”应用程序的 Mac 机器与 Windows 机器通信
- 必须测试物理移动设备
- 没有“黑客”(例如越狱)
假设我没有开发 iOS 应用程序的经验也是安全的。