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

使用Appium尝试触摸操作时出错

秦宁
2023-03-14

下面是我的代码:

package AppiumPackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.touch.TouchActions;
import org.openqa.selenium.remote.Augmenter;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileBrowserType;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.service.local.AppiumDriverLocalService;

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

public class AppiumClass {
    AppiumDriver driver;
    WebDriverWait wait;
    String AppURL = "https://www.ndtv.com/";

    @BeforeTest
    public void setup() throws MalformedURLException {

        // Create an object for Desired Capabilities
        DesiredCapabilities capabilities = new DesiredCapabilities();

        capabilities.setCapability("chromedriverExecutable", "C:/Users/Madankumar/Desktop/Chrome Driver/chromedriver.exe");

        // Name of mobile web browser to automate. ‘Safari’ for iOS and ‘Chrome’
        // or ‘Browser’ for Android
        //capabilities.setCapability("browsername", "Chrome");
        capabilities.setCapability(MobileCapabilityType.BROWSER_NAME,MobileBrowserType.CHROME);

        // The kind of mobile device or emulator to use - iPad Simulator, iPhone
        // Retina 4-inch, Android Emulator, Galaxy S4 etc
        capabilities.setCapability("deviceName", "919d8316");

        // Which mobile OS platform to use - iOS, Android, or FirefoxOS
        capabilities.setCapability("platformName", "Android");

        // Java package of the Android app you want to run- Ex:
        // com.example.android.myApp
        capabilities.setCapability("appPackage", "com.android.chrome");

        // Activity name for the Android activity you want to launch from your
        // package
        capabilities.setCapability("appActivity", "com.google.android.apps.chrome.Main");
        capabilities.setCapability("autoAcceptAlerts", false);

        // Initialize the driver object with the URL to Appium Server and
        // passing the capabilities
        driver = new AppiumDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
        wait = new WebDriverWait(driver, 5);
    }

    @Test
    public void testSearchAppium() throws Throwable {

        driver.get(AppURL);
        Thread.sleep(2000);
        driver.findElement(By.xpath("//a[@class='notnow']")).click();
        Thread.sleep(2000);
        TouchActions actions=new TouchActions(driver);
        actions.longPress(driver.findElement(By.xpath("//a[@class='scroll__nav-link active-nav']"))).perform();
        Thread.sleep(3000);
        actions.flick(20, 0);


    }    

    /*
    @AfterTest
    public void tearDown() {
        driver.quit();
    }
    */

}

在从Eclipse IDE运行类时,得到以下错误:

共有1个答案

蒋曾笑
2023-03-14

与Appium JAVA客户端jar相关的TouchAction类,与Selenium无关。

删除import org.openqa.selenium.interactions.touch.touchactions包并导入Appium JAVA客户端JAR。

这样做您的代码:

public void testSearchAppium() throws Throwable 
{ 
   driver.get(AppURL); 
   Thread.sleep(2000); 
   MobileElement notNow=driver.findElement(By.xpath("//a[@class='notnow']"));  
   TouchAction actions=new TouchAction((PerformsTouchActions) driver); 
   actions.tap(notNow).perform(); 
}
 类似资料:
  • 我试图向下滚动移动应用程序,以便点击屏幕下方的按钮。我使用了下面的触摸动作进行滚动,但它给出了一个例外。还有其他方法吗?任何人请帮我向下滚动移动应用程序。 显示例外 异常在线程"main"org.openqa.selenium.InvalidElementState异常:刷卡没有成功完成 配置 appium 1.15 java客户端: 7.3.0

  • 在(Welcome Park),您可尽情享受PS Vita的基本操作和功能。 触摸操作 PS Vita配有屏幕(触摸屏幕)及背面触摸板,可使用手指执行各种操作。 轻触 使用手指轻触 于选择图标或项目时使用。 双击 连续2次轻触 拖拽 使用手指持续触摸后,再放开手指 于上下左右快速卷动画面等时使用。 滑碰 使用手指轻拨 于上下左右快速卷动画面时使用。 长碰 持续长碰 将主画面切换至编辑模式等时使用。

  • 本文向大家介绍Android触摸及手势操作GestureDetector,包括了Android触摸及手势操作GestureDetector的使用技巧和注意事项,需要的朋友参考一下 现在的智能手机不敢说百分百的都是触摸屏,也应该是百分之九九以上为触摸屏了,触摸屏为我们操作无键盘、无鼠标的手机系统带来了很多的便利。当用户触摸屏幕时会产生很多的触摸事件,down、up、move等等。View类有个Vie

  • ...在Xcode控制台,我得到 它演示了建立了连接并成功找到了服务器,但其他问题出现了。会很感激你的帮助。

  • 启用触摸保护 把 Yubikey-manager 安装在一个绝对路径:【译者注:homebrew 是 macOS 平台的包管理软件】 ❯ brew install libu2f-host libusb swig ykpers ❯ git clone git@github.com:Yubico/Yubikey-manager.git ❯ git submodule update --init --r

  • 我有一个ListView,每个ListView项目中都有一个不可见的EditText和一个可单击的TextView。我正在尝试实现一种行为,单击TextView将使EditText可见,关注EditText并使软键盘自动显示。 我使用< code > adjust size 作为我的输入法,而不是< code>adjustPan,因为显然我正在测试的S3与< code>adjustPan一起出了问