eclipse AndroidDriver类型不是通用类型;不能使用参数将其参数化< MobileElement>

tquggr8v  于 2023-03-08  发布在  Eclipse
关注(0)|答案(3)|浏览(151)

我有一个简单的代码,以自动化我的手机,让它自己打开Chrome浏览器,并打开www.example.com,但我得到了一个错误,我不知道如何修复.google.com but I get an error which I'm not sure how to fix.
我有所有更新的jar

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");
    }
}
    • 线程"main" java. lang中出现异常。错误:未解决的编译问题:AndroidDriver类型不是通用类型;不能使用参数将其参数化AndroidDriver类型不是泛型;不能使用参数将其参数化
at browser_tests.ChromeTest.main(ChromeTest.java:31)**
yftpprvb

yftpprvb1#

设置Android驱动程序从其findElement调用返回MobileElement并不是错误(请参见Appium的Github中的AndroidDriver类Javadoc),因此我们可以排除该问题。

/**
 * 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上BaseAndroidTest的第34行和第54行,了解示例用法。

public class BaseAndroidTest {
    // ...
    protected static AndroidDriver<AndroidElement> driver;

    @BeforeClass public static void beforeClass() {
        // ...
        driver = new AndroidDriver<>(service.getUrl(), capabilities);
}

因此,要解决您的问题,只需从new AndroidDriver构造函数中删除MobileElement,但将其保留在声明中:

//Instantiate Appium Driver
AndroidDriver<MobileElement> driver;
try {
   driver = new AndroidDriver<>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
} catch (MalformedURLException e) {
    System.out.println(e.getMessage());
}

您的驱动程序应示例化。

ig9co6j1

ig9co6j12#

不要使用最新的java_client 8.0,使用java_client 7.6.0,您的问题将消失

e37o9pze

e37o9pze3#

更改为java-client-7.2.0.jar以解决go though this link问题

相关问题