未为TouchActions类型定义方法tap(TapOptions)

时间:2019-04-02 19:55:52

标签: java android automation appium

import java.net.MalformedURLException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.touch.TouchActions;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import static io.appium.java_client.touch.TapOptions.tapOptions;
import static io.appium.java_client.touch.offset.ElementOption.element;

public class Gestures extends Parent {

    public static void main(String[] args) throws MalformedURLException {
        // TODO Auto-generated method stub
        AndroidDriver<AndroidElement> driver = Capabilities();
        driver.findElementByXPath("//android.widget.TextView[@text='Views']").click();      
        TouchActions t = new TouchActions(driver);
        WebElement expandList = 
        driver.findElementByXPath("//android.widget.TextView(@Text='android.widget.TextView')");
        t.tap(tapOptions().withElement(element(expandList)));
    }
}

object tap下,有一条红线表示:未为TouchActions类型定义方法tap(TapOptions)
    TapObjectIssue

5 个答案:

答案 0 :(得分:0)

对于org.openqa.selenium.interactions.touch.TouchActions,没有任何 tap 方法。

您可以使用 singleTap()代替tap()。

您可以检查TouchActions here

的所有可用方法

答案 1 :(得分:0)

尝试此代码段

  WebElement expandList = 
       driver.findElementByXPath("//android.widget.TextView(@Text='android.widget.TextView')");

    TouchActions t = new TouchActions(driver);
    t.singleTap(expandList);
    t.perform();

答案 2 :(得分:0)

我终于能够以这种方式执行代码:

  

没有为TouchAction和TapOptions创建或使用任何对象,它的工作方式如下所示。之前,代码找到了第一个元素(Views),直到.click()起作用,但Appium并未读取水龙头。借助于这些链接(Error while trying out touch actions using Appium和&&(ClassCastException on using Appium TouchActions),我设法以某种方式对代码进行了更改,并且效果很好。

此外,在代码的第二行

  

TouchActions带黄色下划线(警告),上面写着“ TouchAction是原始类型。应该对通用类型TouchAction的引用进行参数设置”,我仍然想知道如何解决这些警告和类似警告。

导入静态io.appium.java_client.touch.TapOptions.tapOptions;

导入静态io.appium.java_client.touch.WaitOptions.waitOptions;

导入静态io.appium.java_client.touch.offset.ElementOption.element;

import java.net.MalformedURLException;

导入java.time.Duration;

导入java.util.concurrent.TimeUnit;

导入org.openqa.selenium.WebElement;

导入io.appium.java_client.TouchAction;

导入io.appium.java_client.android.AndroidDriver;

导入io.appium.java_client.android.AndroidElement;

公共类手势扩展了父级{

公共静态void main(String [] args)抛出MalformedURLException {

// TODO自动生成的方法存根

AndroidDriver驱动程序= Capabilities();

driver.findElementByXPath(“ // android.widget.TextView [@ text ='Views']”)。click();

//要在设备上进行点击,Appium_team已将类= TouchActions

TapOptions t =新的TapOptions();

WebElement expandList = driver.findElementByXPath(“ // android.widget.TextView [@ text ='Expandable Lists']”);

new TouchAction(driver).tap(tapOptions()。withElement(element(expandList)))。waitAction(waitOptions(Duration.ofMillis(250)))。perform();

driver.manage()。timeouts()。implicitlyWait(60,TimeUnit.SECONDS); }}

答案 3 :(得分:0)

这对我有用:

public class LongPressDemo extends AppiumBasic {
    public static void main(String[] args) throws MalformedURLException {

    AndroidDriver<AndroidElement> driver =capabilities();

    driver.findElementByXPath("//android.widget.TextView[@text='Views']").click();
    WebElement expandablelist = driver.findElementByXPath("//android.widget.TextView[@text='Expandable Lists']");

    new TouchAction(driver).tap(tapOptions().withElement(element(expandablelist))).perform();

    }
}

答案 4 :(得分:0)

这个解决方案对我有用 公共类 LongPressDemo 扩展 AppiumBasic { public static void main(String[] args) 抛出 MalformedURLException {

AndroidDriver<AndroidElement> driver =capabilities();

driver.findElementByXPath("//android.widget.TextView[@text='Views']").click();
WebElement expandablelist = driver.findElementByXPath("//android.widget.TextView[@text='Expandable Lists']");

new TouchAction(driver).tap(tapOptions().withElement(element(expandablelist))).perform();

}

}