2014-01-29 70 views
8

我試圖自動化Android設備上的Android Chrome瀏覽器(不僅僅是一個Web瀏覽器或其他瀏覽器,但Chrome瀏覽器)。我認爲這是可能的,通過以下鏈接https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-started---android,但它自動化我的PC鉻瀏覽器。如何使用selenium或appium在android上自動化Chrome瀏覽器?

我也試過Appium,但日誌後沒有任何反應:

debug: executing: adb install C:\Users\hidden\Downloads\AppiumForWindows-0.14.2\ 
Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk 

當我嘗試從瀏覽器訪問信息,我得到這個:

info: Responding to client with error: {"status":13,"value":{"message":"An unkno 
wn server-side error occurred while processing the command.","origValue":"Did no 
t successfully proxy server command"},"sessionId":"666c9e4f-7653-487a-b299-959d4 
000ca79"} 

我有chromedriver。 exe在我的環境變量PATH,整個日誌看起來像這樣:

info: Welcome to Appium v0.14.2 
info: Appium REST http interface listener started on 127.0.0.1:5555 
    info - socket.io started 
debug: Appium request initiated at /wd/hub/session 
debug: Request received with params: {"desiredCapabilities":{"platform":"ANDROID 
","app":"chrome","browserName":"android","browserConnectionEnabled":true,"app-pa 
ckage":"com.android.chrome","device":"android","rotatable":true,"app-activity":" 
com.google.android.apps.chrome.Main","takesScreenshot":true,"version":""}} 
info: Looks like we want chrome on android 
info: Creating new appium session 666c9e4f-7653-487a-b299-959d4000ca79 
info: Ensuring Chromedriver exists 
debug: Pushing unlock helper app to device... 
debug: executing: adb install C:\Users\hidden\Downloads\AppiumForWindows-0.14.2\ 
Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk 
warn: killed=false, code=1, signal=null 
debug: Appium request initiated at /wd/hub/status 
debug: Request received with params: {} 
debug: Proxying command to 127.0.0.1:9515 
info: Making http request with opts: {"url":"http://127.0.0.1:9515/wd/hub/status 
","method":"GET"} 
info: Responding to client with error: {"status":13,"value":{"message":"An unkno 
wn server-side error occurred while processing the command.","origValue":"Did no 
t successfully proxy server command"},"sessionId":"666c9e4f-7653-487a-b299-959d4 
000ca79"} 
GET /wd/hub/status 500 1014ms - 238b 
POST /wd/hub/session 200 31311ms 

謝謝。

+0

是否啓用USB調試您的開發者選擇Android設備上? – Kinlan

+0

是的,我有。我可以自動化selendroid瀏覽器就好了。我認爲它不可能使用硒自動化鉻瀏覽器。我最終創建了一個帶有webview的4.4項目,並使用工具工具將chrome pc工具連接到我的設備。 –

+0

有趣的是,Chrome瀏覽器自動運行(我通過遙測技術完成)當然是可以的,但我沒有通過Selenium – Kinlan

回答

8

調試:執行:ADB安裝C:\用戶\隱藏\下載\ AppiumForWindows-0.14.2 \ Appium \ node_modules \ appium \建立\ unlock_apk \ unlock_apk-debug.apk

如果這裏沒有任何事情發生,那麼您必須重新啓動ARM模擬器和appium服務器/ chromedriver。我多次遇到這種情況,並注意到很多次adb關閉並失去連接。如果我重新啓動abd,一切都開始工作。這只是一個adb命令來安裝apk,它應該需要時間取決於apk的大小,但不是太多。

public static void main(String[] args) throws MalformedURLException{ 
    DesiredCapabilities capabilities = new DesiredCapabilities(); 
    capabilities.setCapability("device","Android"); 
    capabilities.setCapability("app", "Chrome"); 
    capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); 
    capabilities.setCapability(CapabilityType.VERSION, "4.3"); 
    capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS"); 
    WebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
    driver.get("http://www.yahoo.com"); 
} 

我有這段代碼可以在自動化android chrome瀏覽器的appium上運行良好。在上面的日誌中,你的chromedriver沒有成功啓動,所以瀏覽器不是自動的。我有自動鉻瀏覽器的appium日誌: enter image description here 此外,ChromeDriver和Chrome APK的每個組合都不起作用。自從幾天以來我一直在努力,發現: Chrome驅動程序2.3和Chrome APK 29.xxx是兼容的。 Chrome驅動2.9/2.8和Chrome APK 30.xx或31.xx不能正常工作。

關於Just ChromeDriver: 如果您尚未設置功能,您提到的鉻鏈接將自動化PC瀏覽器。事情是這樣的:

DesiredCapabilities capabilities=new DesiredCapabilities();//DesiredCapabilities.chrome(); 
    ChromeOptions options=new ChromeOptions(); 
    options.setExperimentalOptions("androidPackage", "com.android.chrome"); 
    capabilities.setCapability(ChromeOptions.CAPABILITY, options); 

你有櫃面你只是用chromedriver(而不是appium)來設置此功能。 我正在爲此工作,但無法找到能力。 此外,您將不得不自行啓動ChromDriver,該命令將在9515端口收聽任何自動操作。

+0

謝謝。我最終在4.4 android中創建了自己的webview,可以連接到chrome工具。我相信這是有效的,因爲我看到了你剛剛放在其他網站上的相同日誌,但對我來說,它只是在unlock_apk-debug.apk上凍結。重新啓動adb不起作用。另外,我正在使用手機,而不是仿真器。 –

+0

如果你的appium日誌在解鎖...語句中凍結,你可能有多個連接的設備......你也可以簡單地執行這個命令與任何任意的apk文件分別檢查你的adb有什麼問題。 – Khushboo

+0

也許可以禁用設備上的settings/developer選項中的「通過USB進行應用驗證」?還有多個設備(真實或模擬器)可能會導致問題 – mojjj

0

1)閱讀appium日誌,看看它指的是什麼版本的chrome驅動程序。 2)在線檢查最新的chromedriver版本。 截至今日最新版本是2.23。下載此爲WindowsAnd提取它 http://chromedriver.storage.googleapis.com/index.html?path=2.23/ 3)升級Appium(最新今天 - 1.4.16.1) 現在轉到這個位置, C:\ Program Files文件(x86)的\ Appium \ node_modules \ appium \ node_modules \ appium-chromedriver \ chromedriver \ win

並粘貼chromedriver.exe在這裏。(取代舊的)

4)

public AndroidDriver<AndroidElement> startChrome() { 
     DesiredCapabilities capabilities = new DesiredCapabilities(); 

     capabilities.setCapability("deviceName", "AndroidDevice"); 
     capabilities.setCapability("newCommandTimeout", 180); 
     capabilities.setCapability("appActivity", "com.google.android.apps.chrome.Main"); 

     try { 
      driver = new AndroidDriver<>(new URL(appiumURL), capabilities); 
driver.get("google.com") 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }  return driver; 
    } 

5)如果這不工作,確保在appium日誌來檢查,如果其指向更新後的Chrome版本

0

首先檢查您的移動設備與Chrome瀏覽器連接。在web瀏覽器URL

chrome://inspect/devices#devices 

鍵入以下命令這將顯示連接設備的列表。

然後設置所需的功能。

下面是爲我工作的代碼:

public void setUp() { 
    File app = new File("./TestingAPK/app-release-v3.1.0-c20170201.apk"); 
    DesiredCapabilities capabilities = new DesiredCapabilities(); 
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "Chrome"); 
    capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID); 
    capabilities.setCapability("deviceName", "emulator-5554"); 
    capabilities.setCapability("unicodekeyboard", true); 
    capabilities.setCapability("resetkeyboard", true); 
    capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "21"); 
    capabilities.setCapability("appPackage", "app.mangalam.billboy"); 
    capabilities.setCapability("appActivity", "app.mangalam.billboy.main.SplashActivity"); 

    capabilities.setCapability("app", app.getAbsolutePath()); 
    try { 
     driver = new AndroidDriver < > (new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 
    driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS); 
} 
相關問題