当前位置: 首页 > 知识库问答 >
问题:

Android驱动程序在appium中不工作

商开济
2023-03-14

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

线程”main“org.openqa.selenium.WebDriverException中出现异常:返回的值无法转换为WebElement:{element=1}生成信息:版本:”3.4.0“,修订:”unknown“,时间:”unknown“系统信息:主机:”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在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)

但如果我用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();

    }

}

共有1个答案

公英哲
2023-03-14

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

Driver.FindElement(By.Name(“课程类别”)).IsSelected()

注意:自1.5版以来,Appium会话不支持定位器策略'name',如果您将使用最新的客户端版本,您将获得org.openqa.selenium.invalidSelectorException并说明详细信息。

当使用最新的服务器/客户端组合(1.7.1、5.0.4java)时,使用您提到的两种情况都没有问题:

RemoteWebDriver驱动程序=新建RemoteWebDriver(url,功能);

 类似资料:
  • 我正在使用appium来自动化android应用程序。在这种情况下,无法对文本字段执行sendkeys():单击Add Customer选项。翻开了新的一页。我正在尝试在文本字段中输入值。我能够使用XPath找到页面上的文本字段。我可以点击文本字段。但是当我执行sendkeys()时,它失败了。参考下面的截图。 链接:2-添加客户-打开新页面(第2页)并尝试输入详细信息

  • 我正在使用,并试图实现全局的方法,该方法应该在所有场景的执行完成后只执行一次。方法应该退出appium驱动程序。 目前,在每个运行场景之后执行钩子,这意味着每次都应该从头开始创建驱动程序,但我确实希望重用它。 任何帮助都将不胜感激

  • 安装程序 ruby 2.3.3p222(2016-11-21修订版56859)[i386-mingw32] 想要执行的动作/步骤 我想对一个元素执行轻敲(而不是单击) 同时使用selenium-webDrive版本 IRB 到目前为止还不错。但是当我试图执行选项卡操作时。失败了 我觉得我错过了一些小细节(我对appium不熟悉),我只是没有看到我在这里犯的错误。所以如果有人能给我指出正确的方向,那

  • 我已经重构了我的脚本几次,以使它工作,现在得到和错误。请谁能帮助我了解屏幕上实际显示的是什么,我哪里出了问题? 在0.014s内运行2个测试 失败(错误=2)

  • 没有关于未关闭连接的报告。 按照@gus和@stephen C的建议,在

  • 我正试图向下滑动联系人屏幕,但它不工作。 这是我尝试过的代码。 你们能帮我一下我做错了什么吗。 任何帮助都将不胜感激。