我有一个简单的代码可以自动执行手机操作,因此它可以自行打开chrome并打开google.com,但出现错误,我不确定如何解决。
我拥有所有更新的Jars
openssl rsa -in key.pub1 -pubin -pubout -out key.pub2
**“主”线程java.lang.Error中的异常:未解决的编译问题: AndroidDriver类型不是通用的;不能使用参数对其进行参数化 AndroidDriver类型不是通用的;不能使用参数
对其进行参数化package browser_tests;
import java.net.MalformedURLException;
import java.net.URL;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.MobileElement;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
public class ChromeTest {
public static void main(String[] args) {
//Set the Desired Capabilities
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("deviceName", "My Phone");
caps.setCapability("udid", "77d1232f"); //Give Device ID of your mobile phone
caps.setCapability("platformName", "Android");
caps.setCapability("platformVersion", "8.0");
caps.setCapability("browserName", "Chrome");
caps.setCapability("noReset", true);
//Set ChromeDriver location
System.setProperty("webdriver.chrome.driver","C:\\selenium_drivers\\chromedriver.exe");
//Instantiate Appium Driver
AndroidDriver<MobileElement> driver = null;
try {
driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
} catch (MalformedURLException e) {
System.out.println(e.getMessage());
}
//Open URL in Chrome Browser
driver.get("http://www.google.com");
}
}
答案 0 :(得分:0)
设置Android驱动程序从其MobileElement
调用中返回findElement
(请参阅AndroidDriver
class Javadoc in Appium's Github)并不是错误,因此我们可以排除这一问题。
/**
* Android driver implementation.
*
* @param <T> the required type of class which implement {@link org.openqa.selenium.WebElement}.
* Instances of the defined type will be returned via findElement* and findElements*.
* Warning (!!!). Allowed types:
* {@link org.openqa.selenium.WebElement}
* {@link org.openqa.selenium.remote.RemoteWebElement}
* {@link io.appium.java_client.MobileElement}
* {@link io.appium.java_client.android.AndroidElement}
*/
public class AndroidDriver<T extends WebElement>
但是您的问题是,在调用new AndroidDriver
时,不应将泛型类型放入构造函数调用/中。用法示例,请参见Appium Github上{{1}的line 34和line 54。
BaseAndroidTest
因此,要解决您的问题,只需从public class BaseAndroidTest {
// ...
protected static AndroidDriver<AndroidElement> driver;
@BeforeClass public static void beforeClass() {
// ...
driver = new AndroidDriver<>(service.getUrl(), capabilities);
}
构造函数中删除MobileElement
,然后将其保留在声明中:
new AndroidDriver
您的驱动程序应实例化。