我可以使用appium测试web应用程序吗?
我正在测试的应用程序是一个基于web的应用程序。是否可以使用Appium来测试这一点?在他们的网站上声明“Appium是一个开源的测试自动化框架,用于本地和混合移动应用程序。” 因此,我不确定这是否适用于我的web应用程序,因为它不是本地应用程序或混合应用程序 有人能启发我吗我可以使用appium测试web应用程序吗?,appium,Appium,我正在测试的应用程序是一个基于web的应用程序。是否可以使用Appium来测试这一点?在他们的网站上声明“Appium是一个开源的测试自动化框架,用于本地和混合移动应用程序。” 因此,我不确定这是否适用于我的web应用程序,因为它不是本地应用程序或混合应用程序 有人能启发我吗 谢谢 是的,我相信你可以,看看这里: 编辑:过时的链接已修复 另外,还有一个相关问题如果您谈论的是移动web应用程序,那么您可以使用它来测试它们这是可能的,下面是如何在Ruby中创建safari实例的示例: 能力={
谢谢 是的,我相信你可以,看看这里: 编辑:过时的链接已修复
另外,还有一个相关问题如果您谈论的是移动web应用程序,那么您可以使用它来测试它们这是可能的,下面是如何在Ruby中创建safari实例的示例: 能力={
:device => 'iPhone Simulator',
:browserName => 'iOS',
:version => '7.1',
:platform => 'Mac',
:app => 'safari'
}
$mobile_browser = Selenium::WebDriver.for(
:remote,
:desired_capabilities =>capabilities,
:url => "your_server/wd/hub")
下载appium之前,请单击“启动”启动appium服务器。是的,appium可以同时测试本机和混合应用程序 对于Windows计算机,请下载:Appium For Windows。 对于MAC机器,下载:Appium dmg文件 Windows需要: 只需安装Appium.exe+.apk文件(android)+测试设备+android SDK MAC需要 Appium DMG文件+.app/.ipa文件+测试设备+XCODE(配置证书)+ANT+ios webkit代理调试 对于Web应用程序,由于它们完全基于浏览器,Appium也能很好地应用于它们 链接供参考:
首先,您需要知道要测试哪种web应用程序 有三种类型的web应用程序:
是的,您可以使用Appium进行测试,Appium是一种流行的移动测试工具
是的,您可以使用Appium进行测试,但有一个小技巧,您可能需要更改上下文以切换到webview模式
是的,详细信息也在appium.io上
我最近一直在努力解决这个问题,因为我很难找到并切换到webview模式。我发现Appium在测试移动web应用程序时非常麻烦,因为触摸操作没有得到很好的支持。从Java的角度来看,我发现与Appium对话有两个主要选项:和AppiumDriver来自 Selenium RemoteWebDriver 到目前为止,我已经能够使用selenium RemoteWebDriver和RemoteTouchScreen在Android设备上测试我们的web应用程序。使用selenium 3.6.0和Appium 1.6.5,我已经测试了4种不同的方法来单击元素:
webDriver.findElement(locator).click();
new Actions(webDriver).moveToElement(findElement(locator)).click().perform();
new RemoteTouchScreen(new RemoteExecuteMethod(webDriver)).singleTap(((Locatable)webDriver.findElement(locator)).getCoordinates());
new TouchActions(webDriver).singleTap(locator);
在Android上,前3种方法都可以工作,但第4种方法抛出了一个“不受支持”的异常。我选择了第1种方法用于点击,第3种方法用于手势
在iOS上,方法1、2和4抛出一个“尚未支持”的异常,而方法3什么也不做。因为我不准备花时间解决这个问题,我们现在只在Android上测试,希望Appium会得到改进,iOS会得到更好的支持
Appium Java客户端
我使用Appium java客户端(5.0.4版)的经验更糟糕。似乎没有关于如何进行触摸操作的全面教程,只有一些代码片段在互联网上流传。因此,我对这个问题的回答是尝试创建一个
首先实例化驱动程序并导航到一个页面:
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "Samsung Android S8");
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("platformName", "Android");
MobileDriver appiumDriver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
appiumDriver.navigate().to("https://duckduckgo.com");
这导致:org.openqa.selenium.WebDriverException:方法尚未实现
根据我的推断,我必须切换上下文才能进行触摸动作。尝试二:
appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();
这是可行的。但是,仅适用于By.id选择器。我找不到任何其他选择器在本机应用程序上下文中有效。而且,由于我们网站中的大多数元素都缺少id,因此我需要xpath选择器。尝试三种方法:
appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.xpath("//*[@id=\"search_form_input_homepage\"]"))).perform();
这导致:org.openqa.selenium.NoSuchElementException:使用给定的搜索参数在页面上找不到元素
我可以想到的其他解决方法,例如在CHROMIUM上下文中选择WebElement,然后将位置转移到本机应用程序上下文中,这不是一个选项,因为坐标系不同(浏览器像素与屏幕像素)
并且不要忘记在每次触摸操作后返回默认的CHROMIUM上下文。因此,唯一工作示例的完整代码为:
try {
appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();
} finally {
appiumDriver.context("CHROMIUM");
}
目前,我的结论是,使用Appium测试移动web应用程序还没有完成。指向github的链接已断开,请修复。请参阅此官方文档:这将不起作用。浏览器名称必须是safari,您必须切换到WEBVIEW上下文才能使用web。
try {
appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();
} finally {
appiumDriver.context("CHROMIUM");
}