我正在測試的應用程序是一個基於Web的應用程序。是否有可能使用Appium來測試它?在他們的網站上,它指出:「Appium是一個開源測試自動化框架,可用於本機和混合移動應用程序。」我可以使用appium來測試網絡應用嗎?
所以我不確定這是否適用於我的網絡應用程序,因爲它不是原生應用程序或混合應用程序。
有人能夠啓發我嗎?
謝謝!
我正在測試的應用程序是一個基於Web的應用程序。是否有可能使用Appium來測試它?在他們的網站上,它指出:「Appium是一個開源測試自動化框架,可用於本機和混合移動應用程序。」我可以使用appium來測試網絡應用嗎?
所以我不確定這是否適用於我的網絡應用程序,因爲它不是原生應用程序或混合應用程序。
有人能夠啓發我嗎?
謝謝!
如果你正在談論手機網絡應用程序,是的,你可以使用Appium進行測試
這是可能的,這裏是示例如何創建實例的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服務器。
這是行不通的。瀏覽器名稱必須是Safari,並且您必須切換到WEBVIEW上下文才能使用Web。 –
是的,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
我發現Appium在測試移動Web應用程序時非常麻煩,因爲觸摸操作得不到很好的支持。從Java的角度來看,我發現與Appium交談有兩個主要選項:Selenium RemoteWebDriver和Appium 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應用程序是還沒有應用。
https://github.com/appium/appium/blob/master/docs/en/mobile-web.md – sibidiba
指向github的鏈接已損壞,請修復 –
請查看此官方文檔:http:// appium。 io/docs/en/writing-running-appium/web/mobile-web/ – eeadev