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
答案 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();
}
}