为什么元素搜索重复出现强制转换错误



我正在学习appium。当我试图在计算器上做一个简单的点击功能时,我反复出现同样的错误。这是代码

import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
public class appiumtesttwo {
static AppiumDriver<MobileElement>  driver;




public static void main(String[] args) {
try {
opencalculator();

} catch (Exception ex) {
// TODO: handle exception
System.out.println(ex.getCause());
System.out.println(ex.getMessage());
ex.printStackTrace();
}


}

public static void opencalculator() throws MalformedURLException {

DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("deviceName", "Lenovo TB-8504X");
cap.setCapability("udid", "HGAH50S4");
cap.setCapability("platformName", "Android");
cap.setCapability("platformVersion", "8.1.0");

cap.setCapability("appPackage", "com.android.calculator2");
cap.setCapability("appActivity", "com.android.calculator2.Calculator");

URL url = new URL("http://127.0.0.1:4723/wd/hub");


driver = new AppiumDriver<MobileElement>(url,cap);
System.out.println("App started");



MobileElement find = (MobileElement) driver.findElement( By.id("com.android.calculator2:id/digit_8"));
find.click();

System.out.println("completed");
}
}

计算器会打开,但不会单击元素。

我得到的错误是

null
class org.openqa.selenium.remote.RemoteWebElement cannot be cast to class io.appium.java_client.MobileElement (org.openqa.selenium.remote.RemoteWebElement and io.appium.java_client.MobileElement are in unnamed module of loader 'app')
java.lang.ClassCastException: class org.openqa.selenium.remote.RemoteWebElement cannot be cast to class io.appium.java_client.MobileElement (org.openqa.selenium.remote.RemoteWebElement and io.appium.java_client.MobileElement are in unnamed module of loader 'app')
at appiumtesttwo.appiumtesttwo.opencalculator(appiumtesttwo.java:54)
at appiumtesttwo.appiumtesttwo.main(appiumtesttwo.java:22)

有点令人沮丧,因为如果不先解决它,我就无法进一步学习。我使用的java客户端版本是7.6.0,seleniumjava版本是4.0.0。提前感谢

我认为有两个问题:

  • 7.6与4.0.0不兼容,但仅与3.141.59兼容(但这无关紧要,因为它已经指向org.openqa.selenium,而不是seleniumjava(
  • 停止施法!!!替换此:
MobileElement find = (MobileElement) driver.findElement( By.id("com.android.calculator2:id/digit_8"));
find.click();

有了这个

driver.findElement( By.id("com.android.calculator2:id/digit_8").click();

它对我有用!

最新更新