2013-10-16 87 views
7

我正在測試的應用程序是一個基於Web的應用程序。是否有可能使用Appium來測試它?在他們的網站上,它指出:「Appium是一個開源測試自動化框架,可用於本機和混合移動應用程序。」我可以使用appium來測試網絡應用嗎?

所以我不確定這是否適用於我的網絡應用程序,因爲它不是原生應用程序或混合應用程序。

有人能夠啓發我嗎?

謝謝!

回答

8

首先,你需要知道你要測試什麼樣的Web應用程序。據Saucelabs

信息有三種類型的Web應用程序:

  1. 機應用程序
    是的,你使用Appium這對於移動測試的流行工具可以測試它。
  2. 混合應用(本地+的WebView)
    是的,你可以用Appium但有小動作,你可能需要改變上下文切換到網頁視圖模式下進行測試。 appium.io
  3. 網絡應用(應用程序,從安裝在移動設備上的瀏覽器訪問,而不是一個你可以下載和安裝)
    是的,細節在appium.io了。

此外,實際上有另一種類型的應用程序:混合應用程序,但與定製的webview。
最近我一直在苦苦掙扎,因爲我很難找到並切換到webview模式。

2

是的,我敢肯定,你可以,看看這裏:

編輯:固定過期鏈接link to appium doc

此外,一個相關的問題here

+0

https://github.com/appium/appium/blob/master/docs/en/mobile-web.md – sibidiba

+1

指向github的鏈接已損壞,請修復 –

+0

請查看此官方文檔:http:// appium。 io/docs/en/writing-running-appium/web/mobile-web/ – eeadev

0

如果你正在談論手機網絡應用程序,是的,你可以使用Appium進行測試

1

這是可能的,這裏是示例如何創建實例的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服務器。

+0

這是行不通的。瀏覽器名稱必須是Safari,並且您必須切換到WEBVIEW上下文才能使用Web。 –

-1

是的,Appium可以測試本地和混合應用程序。

對於Windows機器,請下載:Appium For Windows。 對於MAC機器,請下載:Appium dmg文件。

Windows需要: 只需安裝Appium.exe + .apk文件(android)+測試設備+ Android SDK。

MAC需要 Appium DMG文件+。應用程序/ .ipa文件+測試裝置+ XCODE(預配證書)+ ANT + IOS-WebKit的代理調試。

對於Web應用程序,因爲它們純粹是基於瀏覽器的,所以Appium也能很好地適用於它們。

鏈接以供參考: 所有的https://github.com/appium/appium/blob/master/docs/mobile-web.md

1

我發現Appium在測試移動Web應用程序時非常麻煩,因爲觸摸操作得不到很好的支持。從Java的角度來看,我發現與Appium交談有兩個主要選項:Selenium RemoteWebDriverAppium Java client的AppiumDriver。

硒RemoteWebDriver

到現在爲止我已經能夠測試使用硒RemoteWebDriver和RemoteTouchScreen在Android設備上我們的Web應用程序。使用Selenium 3.6.0和1.6.5 Appium,我已經測試了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會拋出'not yet supported'異常,方法3不執行任何操作。由於我沒有準備投入時間解決這個問題,因此我們現在只在Android上進行測試,希望Appium能夠得到改進,並且iOS會得到更好的支持。

Appium Java客戶端

我與Appium Java客戶端(版本5.0.4)的經驗是更糟。似乎沒有關於如何進行觸摸操作的綜合教程,只有幾個代碼片段在interwebs上飛來飛去。所以我對這個問題的回答是嘗試創建一個。

先初始化驅動器,然後導航到一個頁面:

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"); 

然後進行觸控操作:

new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform(); 

這導致:org.openqa.selenium.WebDriverException:方法具有不尚未實施

this forum post我推斷我必須切換上下文才能夠做t ouch行動。嘗試二:

appiumDriver.context("NATIVE_APP"); 
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform(); 

這是行得通的。但是,僅限於By.id選擇器。我在NATIVE_APP上下文中找不到任何其他選擇器。由於我們網站上的大多數元素缺少一個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,然後將位置移交給NATIVE_APP上下文,因爲座標系統不同(瀏覽器像素與屏幕像素不同),所以不是一種選擇。

並且不要忘記在每次觸摸操作後返回默認的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應用程序是還沒有應用。

相關問題