我试图在内置的手机应用程序中执行某些操作,并尝试按0键(长按),但每次我尝试执行时,都面临问题:
org.openqa.selenium.WebDriverException:返回的值无法转换为WebElement:{ELEMENT = 1} 构建信息:版本:' 3.4.0',修订版:'未知',时间:'未知'
我的代码
package mobileapp.com.example;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
public class Call {
AndroidDriver<WebElement> driver;
@BeforeClass
public void Setup() throws MalformedURLException {
DesiredCapabilities cap= new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Fever");
cap.setCapability("platformVersion", "6.0");
cap.setCapability("platformName", "Android");
cap.setCapability("appPackage", "com.android.dialer");
cap.setCapability("appActivity", "com.android.dialer.DialtactsActivity");
//driver=new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
driver=new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
}
@Test
public void simpleTest() {
driver.findElement(By.id("com.android.dialer:id/floating_action_button")).click();
WebElement ele=driver.findElement(By.id("com.android.dialer:id/zero"));
TouchAction action=new TouchAction(driver);
action.longPress(ele);
ele.click();
}
}
我使用的是Appium版本1.4.16.1,而appium java客户端版本是5.0.4
答案 0 :(得分:0)
主要问题是您使用的是旧 appium服务器和最新 java客户端,因此您的问题是由客户端/服务器版本不兼容引起的。
将服务器更新为 1.7.x
如果定位器是正确的,它应该在更新后工作。或者你可以使用:
driver.pressKeyCode(AndroidKeyCode.KEYCODE_NUMPAD_0);
其中driver
是AndroidDriver
class