Selenium能否直接在安卓设备上运行(无需adb)?

9
我正在为Android编写一个web测试自动化应用程序,想知道是否有一种方法可以直接在Android设备上运行chromedriver(Selenium),或者将其与我的应用程序捆绑在一起。我知道通常的方法是在PC上运行chromedriver,并使用adb连接到Android设备。但我希望我的用户不必安装Android SDK,即使没有PC也能在本机设备上运行测试。
有人知道如何做到这一点吗?如果没有,是否可能在Android应用程序中实现WebDriver协议?是否有任何已经尝试过这样做的开源项目?
3个回答

0

要在移动设备上运行Web测试,您需要使用Appium作为服务器。

1)安装Appium并启动Appium服务器

2)连接已激活“开发者选项”和“USB调试”的移动设备。

3)创建具有适当功能的RemoteWebDriver实例:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyDevice");
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
RemoteWebDriver driver = new RemoteWebDriver("http://localhost:4723/wd/hub", capabilities);

使用这个驱动实例的方法和您之前与ChromeDriver使用方法一样。


也许我在这里有什么误解,但是 - 正如我在J. Paul的回答下面评论的那样 - 我相信Appium必须从安装了Android SDK的PC上运行,是吗?我的目标是通过使用本地应用程序(如果需要,我愿意自己编写)来自动化未连接到PC的设备上的Chrome。 - sacheie
好的,我明白了。那么您需要找到一种在Android设备上运行ChromeDriver可执行文件并从测试apk发送命令的方法(基本上是执行Java代码)。我认为这是可行的,但不确定它是否容易实现。您可以查看chromedriver文档以了解如何通过Java代码操作服务:https://sites.google.com/a/chromium.org/chromedriver/getting-started - dmle

0

您可以使用Appium,这是一个实现WebDriver协议的开源工具,用于自动化Android(和iOS)Web测试。

我不确定这是否特别回答了您关于在Android设备上直接运行“chromedriver(Selenium)”的问题,但这是我过去自动化移动测试的方式。


2
我的理解是 - 如果我错了请指正 - Appium 必须在安装有 Android SDK 的 PC 上运行。我的目标是通过使用本地应用程序(如果必要,我愿意自己编写)来自动化未连接到 PC 的设备上的 Chrome。 - sacheie
啊,我现在明白你的问题了,而且你是正确的。Appium无法解决那个特定的问题,因为它需要连接到电脑。抱歉,我不确定如何做到这一点,或者是否可能实现。 - C. Peck

0

理论上:是的

但我认为你需要一个定制的驱动程序,可能还需要一个已经Root过的Android手机。

在Android shell中执行adb命令是可行的(使用标志和调试功能启动Chrome,并在特定端口上启用调试)。

对于驱动程序,我看到有3种可能的解决方案:

  • 一个可以与本地主机端口通信并连接到Chrome调试端口的应用程序(可能需要自己开发)
  • 使用TermuxNetHunter,这是一个适用于Android的Linux环境,在其中您也可以执行Java或Python驱动程序
  • 使用屏幕操作自动化(参见https://github.com/Nain57/Smart-AutoClicker

无论如何,我认为这不可能直接实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接