【问题标题】:Android Driver not working in appiumAndroid驱动程序在appium中不起作用
【发布时间】:2018-05-16 16:15:52
【问题描述】:

我是 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) 在 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) 在 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) 在 io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:58) 在 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 版(蛇夫座)》

包演示;

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

    }

}

【问题讨论】:

    标签: appium appium-android


    【解决方案1】:

    您没有提及您使用的是什么appium java客户端版本,但首先:

    driver.findElement(By.name("Course Category")).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);

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

    【讨论】:

    • appium java 客户端版本是 5.0.4,询问的主要问题是我不能使用 "driver.scrollTo("SAP BI"); " 我应该更改我的 appium 服务器还是告诉我滚动到如何工作
    • 首先:确保您使用的 appium 服务器版本至少为 1.7,因为您使用的是最新的客户端。第二:创建像Android driver = new AndroidDriver(url, capabilities);这样的驱动程序实例并滚动到你需要像driver.findElementByAndroidUIAutomator( "new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textMatches(\"SAP BI\").instance(0)))");那样做的元素
    • 我已经下载了appium server 1.7.1,当我点击它时,它是强制关闭的,你能建议我解决方案吗?我正在使用 Windows 10
    • 使用您运行的代码、appium 服务器日志和格式化的堆栈跟踪更新问题。目前尚不清楚您的问题是什么+堆栈跟踪很混乱,请应用格式化
    • 在执行你必须启动appium服务器的代码之前,我只使用了上面的代码,当我打开Appium v​​1.7.1 GUI并点击启动服务器时,它崩溃了。建议我纠正它的方法或启动服务器的不同方法。
    猜你喜欢
    • 1970-01-01
    • 2020-12-17
    • 2018-01-20
    • 1970-01-01
    • 2016-02-26
    • 2019-04-30
    • 2020-10-15
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多