Android驱动程序无法在appium

时间:2017-12-02 20:37:41

标签: appium appium-android

我是Appium的新手,正在试用Android设备,所以在编写代码时我想使用Android驱动程序,但每次出现错误时,请检查下面的错误

“线程中的异常”main“org.openqa.selenium.WebDriverException:返回的值无法转换为WebElement:{ELEMENT = 1} 构建信息:版本:'3.4.0',修订版:'未知',时间:'未知' 系统信息:主机:'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     在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:417)     at io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:62)     at 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)     at io.appium.java_client.AppiumDriver.findElementByName(AppiumDriver.java:1)     at io.appium.java_client.android.AndroidDriver.findElementByName(AndroidDriver.java:1)     在org.openqa.selenium.By $ ByName.findElement(By.java:303)     在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:402)     at io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:58)     at io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1)     在io.appium.java_client.android.AndroidDriver.findElement(AndroidDriver.java:1)     在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版本1.4.16.1(Ophiuchus)”

包演示;

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

    }

}

1 个答案:

答案 0 :(得分: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);

两者都可以用于查找元素和属性。