java - Appium 没有对具有 clickable=false 和 enabled=true 的元素执行单击或点击模拟器
问题描述
我正在尝试练习本机应用程序自动化,但由于一个问题而卡住了。在我试图打开的模拟器上都没有执行点击和点击。当使用“uiautomatorviewer”检查 DOM 时,我看到元素的可点击属性和所有其他属性都是假的,只有启用的属性是真的。以下是我尝试用于点击元素的代码片段。
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.Point;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.touch.TapOptions;
import io.appium.java_client.touch.offset.PointOption;
public class Appium_Base {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File f = new File("src");
File fs = new File(f,"ApiDemos-debug.apk");
DesiredCapabilities caps=new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Pratik_Emulator");
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "ANDROID");
caps.setCapability(MobileCapabilityType.APP, fs.getAbsolutePath());
AppiumDriver<MobileElement> driver = new AppiumDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),caps);
Thread.sleep(10000);
List<MobileElement> elements=driver.findElements(By.className("android.widget.TextView"));
Thread.sleep(5000);
Point location = elements.get(0).getLocation();
TouchAction action = new TouchAction(driver);
action.tap(PointOption.point(location.x, location.y)).perform();
System.out.println("Clicked");
Thread.sleep(10000);
}
}
Clicked 打印在控制台上,但未在模拟器上执行。模拟器和appium服务器日志的镜像如下。
我试图点击/单击可访问性。但是什么也没发生。我还尝试了使用 click() 方法而不是 tap 方法的代码片段,如下所示。
elements.get(0).click();
但这也不起作用。可能是因为clickable=false
。
谁能帮我解决这个问题?
解决方案
推荐阅读
- java - Hibernate Search FieldBridge 可以为动态字段配置构面吗?
- python - 更改列中第一个非零元素上方的数组值
- python - 插值函数 - 矩阵
- android - 使用 Kotlin 向 ROOM 数据库中的特定 id 添加注释
- .net - WPF DataGrid 绑定类中的某些字段不是全部
- kubernetes - 使用入口资源中的主机名/子域从外部访问应用程序
- c# - AWS Textract .Net SDK 的其他选项
- python - 如何使用 Python 从 Windows 将文件放在经过密码验证的 SFTP 服务器上?
- android - 尝试插入 SQLite 时出现 -1 错误
- c# - 如果水晶报表中满足条件,则禁止链接