首页 > 解决方案 > 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服务器日志的镜像如下。Tap_image_appium_server_emulator

我试图点击/单击可访问性。但是什么也没发生。我还尝试了使用 click() 方法而不是 tap 方法的代码片段,如下所示。

elements.get(0).click();

但这也不起作用。可能是因为clickable=false

谁能帮我解决这个问题?

标签: javaseleniumappiumappium-android

解决方案


推荐阅读