我正在学习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();
它对我有用!