2017-12-02 137 views
0

我是新來Appium沒有工作,試圖在Android設備上,所以在編寫代碼時我想使用Android驅動程序,但每次錯誤出現,檢查以下Android的驅動程序在appium

錯誤「異常線程」主「org.openqa.selenium.WebDriverException:返回值無法轉換爲WebElement:{ELEMENT = 1} 構建信息:版本:'3.4.0',修訂:'未知',時間:'未知' 系統信息: host:'DESKTOP-HT0VM72',ip:'192.168.88.104',os.name:'Windows 10',os.arch:'x86',os.version:'10 .0',java.version:'1.8.0_144' 驅動程序信息:driver.version:AndroidDriver at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:417) 在io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:62) 在io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1) 在io.appium.java_client.android.AndroidDriver.findElement( AndroidDriver.java:1) 在org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:485) 在io.appium.java_client.DefaultGenericMobileDriver.findElementByName(DefaultGenericMobileDriver.java:110) 在io.appium。 java_client.AppiumDriver.findElementByName(AppiumDriver.java:1) at io.appium.java_client.android.AndroidDriver.findElementByName(AndroidDriver.java:1) at org.openqa.selenium.By $ ByName.findElement(By.java: 303) at org.openqa.selenium.remote.Re moteWebDriver.findElement(RemoteWebDriver.java:402) 在io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:58) 在io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1) 在IO。 app.java_client.android.AndroidDriver.findElement(AndroidDriver.java:1) at demo.TestCase1.main(TestCase1.java:31) 引起:java.lang.ClassCastException:java.util.HashMap不能轉換爲org .openqa.selenium.WebElement 在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:415) ...... 13多個」

,但如果我用RemoveWebDriver取代AndroidDriver能正常工作?爲什麼? 「Appium v​​ersion 1.4.16.1(Ophiuchus)」

package demo;

import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.List; 
import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 

import io.appium.java_client.android.AndroidDriver; 

public class TestCase1 { 

    public static void main(String[] args) throws MalformedURLException { 

     RemoteWebDriver driver; 
     DesiredCapabilities cap=new DesiredCapabilities(); 
     cap.setCapability("deviceName", "Fever 4G"); 
     cap.setCapability("platformVersion", "6.0"); 
     cap.setCapability("platformName", "Android"); 
     cap.setCapability("appPackage", "com.vector.guru99"); 
     cap.setCapability("appActivity", "com.vector.guru99.BaseActivity"); 
     driver =new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); 
     driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 

     //verification1 
     if(driver.findElement(By.name("Guru99")).isDisplayed()) 
      System.out.println("guru99 header is displayed"); 
     else 
      System.out.println("guru99 is not displayed"); 

     //verification2 
     if(driver.findElement(By.name("Course Category")).isSelected()) 
      System.out.println("Course category is currently selected"); 
     else 
      System.out.println("Course Category is not selected"); 

     //Get all the courses listed in the course category 
     List<WebElement> courseoffered=driver.findElements(By.id("com.vector.guru99:id/lblListHeader")); 
     System.out.println("Course offered are :"); 
     for(WebElement course : courseoffered) 
     { 
      String cours= course.getText(); 
      System.out.println(cours); 
      if(course.isEnabled()) 
       System.out.println(" is Enabled "); 
      else 
       System.out.println(" is not Enabled"); 

     } 
     driver.quit(); 

    } 

} 

回答

0

你沒有提到你使用的是什麼appium Java客戶端版本,但首先:

driver.findElement(By.name( 「課程分類」))isSelected()

注意:從1.5版開始,Appium會話不支持定位器策略「名稱」,如果您使用最新的客戶端版本,您將獲得org.openqa.selenium.InvalidSelectorException的解釋詳細信息。

在使用最新的服務器/客戶端組合(1.7.1,5.0.4 JAVA),沒有你提到使用這兩種情況下問題:

RemoteWebDriver driver = new RemoteWebDriver(url, capabilities);

AppiumDriver driver = new AndroidDriver(url, capabilities);

兩者都用於查找元素和屬性。

+0

appium java客戶端版本是5.0.4,詢問查詢的主要問題是我不能使用「driver.scrollTo(」SAP BI「);」並且我應該更改我的appium服務器或告訴我Scroll to work –

+0

首先:確保您使用的appium服務器版本至少爲1.7,因爲您使用的是他最新的客戶端。其次:創建類似於「Android驅動程序=新AndroidDriver(url,功能)」的驅動程序實例;並且滾動到元素,您需要像'driver.findElementByAndroidUIAutomator( 「new UiScrollable(new UiSelector()。scrollable(true) (0))。「);' – dmle

+0

我已經下載了appium服務器1.7.1,當我點擊它時,這是力量關閉,你可以建議我解決方案。我正在使用Windows 10 –