问题标签 [appium-android]

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.

0 投票
1 回答
30 浏览

android - 在 Mac 上设置 Appium 框架来测试 Android 应用

我想在 Mac Sierra 上设置 Appium 框架以使用 Android Studio EDI 测试 Android 应用程序。

你能告诉我我该怎么做吗?

谢谢和问候, 安吉洛

0 投票
1 回答
294 浏览

appium-android - 关于 Android Appium 自动化测试

我们的 Android 应用程序非常大,我们需要通过自动化测试覆盖大部分代码,为此我们使用 Appium。我们的大多数 Appium 测试都会执行调用端点的代码部分,因此非常耗时。对于用户询问如何模拟端点的问题,Appium 论坛(https://discuss.appium.io/t/how-to-mock-api-backend-in-native-apps/4183)中的回复似乎建议仅使用 Appium 进行端到端测试?

我的问题是如何编写工业 Appium 测试?根据测试金字塔的定义,我们应该编写很少的端到端测试。那么使用 Appium 的行业应用很少有这样的测试吗?使用 Appium 时尝试模拟端点是否不常见?如果没有,如何使用 appium 模拟端点,例如使用 WireMock?

问候,

稻田

0 投票
0 回答
257 浏览

android - 无法在 Android 7.0 / 7.1 上运行 Appium 测试

我的电脑已经为 Appium 做好了准备,它在 Android 6.0 上运行良好,但在尝试在 Android 7.0 / 7.1 上运行时却无法运行。在尝试在 android(7.0) 设备上运行测试脚本(已经在 6.0 上运行良好)时,它只是想打开AppiumSettings应用程序,此时会失败。PC 操作系统:Windows 10 Appium 版本:1.7.1 Npm 版本:3.10.3

我正在使用以下依赖项:

服务器错误日志:

0 投票
1 回答
304 浏览

python - 如何在 python-appium 基本页面中包含设置方法?

当谈到 python 或一般编码时,我只是一个初学者。我正在尝试使用 python-appium 和页面对象模型设置自动化框架。我的问题是,如何将设置方法包含到我的基本页面中?当我从我的测试脚本中调用该方法时,它说“驱动程序”未解决并引发异常。我知道我只是错过了一些简单的东西,但我的 google-fu 让我失望了,现在我已经在这里发布了。

这是我的设置方法:

我想将此方法调用到我的所有测试或它的变体中,具体取决于所使用的设备。这是我试图从我的基本页面调用它的方式:

我所有的导入语句都存在。让我知道您是否需要任何其他信息。如果您可以参考 python appium POM 教程,也将不胜感激。这是我在 stackoverflow 上的第一篇文章。

0 投票
0 回答
110 浏览

android - 谷歌智能锁后找不到元素

在我的 Android 应用程序中尝试自动登录时,我遇到了一些意外行为。Appium 1.7.1

设想:

启动应用程序单击登录按钮(按 id)此处出现 google smart lock 窗口在 google smart lock 上单击“取消”(按 id,“com.google.android.gms:id/cancel”)尝试单击“edit_userName”按钮,但是现在无法通过 id 找到这样的元素。并且现在无法通过我的应用程序的 id 或文本找到任何元素,现在屏幕上。如果我在没有谷歌智能锁的情况下连接设备,一切都会完美。

似乎我正在失去对应用程序的关注。

任何想法如何处理这个?

0 投票
1 回答
1941 浏览

android - 使用 Appium 在真正的 Android 设备上以隐身模式打开 Chrome

我正在使用 Appium 在 Chrome for Android 上测试我的网站。我想为 Chrome for Android 添加一些选项,例如隐身模式和禁用缓存的可能性。我尝试使用以下示例代码,但它无法正常工作。Appium 能够在我的 Android 设备上打开 Chrome,但它不是处于隐身模式,因此它不会禁用浏览器的缓存。

这是我的 Python 脚本的代码片段:

我的环境如下:

  • Mac OS X 10.12
  • 安卓 7.1.1
  • Appium 1.6.4(dmg 包)
  • Python 3.6 和 Appium 的 Python 包装器
  • 铬诉 61.0.3163.98

我不确定我的错误是什么。也许,我没有正确使用 chromeOptions 参数,但我没有找到正确的方法来利用它。

0 投票
0 回答
260 浏览

android - 无法在 Android Studio 中使用 appium、Java 解决 Android 自动化问题

在此处输入图像描述

到目前为止我没有找到任何答案,我确实尝试过清理项目并重建,同步和无效缓存重启,SDK.......选项。我多次安装和卸载所有框架显示以下错误是说错误

  • 出了什么问题:任务“:app:compileDebugUnitTestJavaWithJavac”执行失败。编译失败;有关详细信息,请参阅编译器错误输出。

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

构建失败

信息:Gradle tasks [:app:assembleDebug] 错误:将字节码转换为 dex 时出错:原因:Dex 无法解析版本 52 字节码。这是由使用 Java 8 或更高版本编译的库依赖关系引起的。如果您在库子模块中使用 'java' gradle 插件,请将 target Compatibility = '1.7' (我做了这个更改) source Compatibility = '1.7' 添加到该子模块的构建 .gradle 文件。错误:1个错误;中止错误:任务':应用程序执行失败:使用 Dex 转换类进行调试。com.android.build.api.transform.TransformException:java.lang.RuntimeException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: dex进程返回码1信息:BUILD FAILED

0 投票
2 回答
2140 浏览

java - 如何使用 MobileElement 在 Appium Android 中找到它的兄弟姐妹

我正在为 Android 做 Appium,我已经知道如何使用 scrollIntoView() 来查找元素。

我的表是这样的:

如上所述,我可以使用文本“Tom”和 id 定位 (0)TextView。但是,我想要的是找到 (1)TextView 并单击它。有没有办法做到这一点?

我正在寻找类似的东西:

0 投票
0 回答
1441 浏览

java - 返回值无法转换为 WebElement:{ELEMENT=1} 构建信息:版本:'unknown',修订:'unknown',时间:'unknown'

我正在使用 appium 执行我的自动化脚本,但发现了一些错误。你能帮我解决以下错误吗?

我使用的是最新版本。
1. Selenium 版本:Selenium-java-3.6.0
2.. Appium Java 客户端:java-client-5.0.3

org.openqa.selenium.WebDriverException:返回值无法转换为 WebElement:{ELEMENT=1}
构建信息:版本:“未知”,修订:“未知”,时间:“未知”
系统信息:主机:“PHO147”, ip:'192.168.3.147',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_71'
驱动程序信息:driver.version:AndroidDriver 位于 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:417) 位于 io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:62) 位于 io.appium.java_client .AppiumDriver.findElement(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.findElement(AndroidDriver.java:1) 在 org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:509) 在io.appium.java_client.DefaultGenericMobileDriver.findElementByXPath(DefaultGenericMobileDriver.java:140) 在 io.appium.java_client.AppiumDriver.findElementByXPath(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.findElementByXPath(AndroidDriver.java: 1) 在 sun.reflect 的gesture.testGest(gesture.java:37)。Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 的 NativeMethodAccessorImpl.invoke0(Native Method) org.testng 的 java.lang.reflect.Method.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)。 internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) at org.testng.internal.Invoker.invokeMethod(Invoker.java:661) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869) at org.testng .internal.Invoker.invokeTestMethods(Invoker.java:1193) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 在 org. testng.TestRunner.privateRun(TestRunner.java:744) 在 org.testng.TestRunner.run(TestRunner.java:602) 在 org.testng.SuiteRunner.runTest(SuiteRunner.java:380) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run (SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java: 1301) at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) at org.testng.TestNG.runSuites(TestNG.java:1144) at org.testng.TestNG.run(TestNG.java:1115) at org. testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76) : 爪哇。lang.ClassCastException:java.util.HashMap 无法在 org.openqa.selenium.remote.RemoteWebDriver.findElement 中转换为 org.openqa.selenium.WebElement(RemoteWebDriver.java:415)

0 投票
1 回答
207 浏览

appium - Appium:处理android系统交互

我有一个简单的用例。在 android 应用程序中,按一个按钮,浏览器应用程序将打开一个 URL。

将出现“打开方式”对话框,允许您选择浏览器或 Chrome。

Android 弹出窗口:打开方式

在 appium 检查器中看起来像这样:

尝试自动化这似乎应该是微不足道的,但却给我带来了麻烦。我可以将“Browser”和“Chrome”的文本作为离散AndroidElement的,但我似乎无法实际按下实际选项。

我是否可以实际与这些东西进行交互,或者这是不可能的,因为它是 android 系统本身的一部分?

为了帮助解决这个问题,这里是我的页面对象的设置。