Java Appium Webdriver导入问题
用Java为Android构建一个基本的Appium测试 当我运行代码时,它会给我一个异常错误: 线程“main”java.lang中出现异常。错误:未解决的编译问题: 无法解析驱动程序 无法解析驱动程序 驱动程序无法解析为变量 at tests.AppiumTest.main(AppiumTest.java:50) 我已经三次检查了我的jar文件,所有这些文件似乎都包含在内,我没有遗漏任何文件,但是当我将鼠标悬停在驱动程序文本上时,导入Webdriver选项不会出现 代码如下:Java Appium Webdriver导入问题,java,eclipse,selenium,webdriver,appium,Java,Eclipse,Selenium,Webdriver,Appium,用Java为Android构建一个基本的Appium测试 当我运行代码时,它会给我一个异常错误: 线程“main”java.lang中出现异常。错误:未解决的编译问题: 无法解析驱动程序 无法解析驱动程序 驱动程序无法解析为变量 at tests.AppiumTest.main(AppiumTest.java:50) 我已经三次检查了我的jar文件,所有这些文件似乎都包含在内,我没有遗漏任何文件,但是当我将鼠标悬停在驱动程序文本上时,导入Webdriver选项不会出现 代码如下: package
package tests;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
public class AppiumTest {
public static void main(String[] args) {
//Set the Desired Capabilities
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("deviceName", "My Phone");
caps.setCapability("udid", "Redacted"); //Give Device ID of your mobile phone
caps.setCapability("platformName", "Android");
caps.setCapability("platformVersion", "7.1.1");
caps.setCapability("appPackage", "com.android.vending");
caps.setCapability("appActivity", "com.google.android.finsky.activities.MainActivity");
caps.setCapability("noReset", "true");
// Instagram: com.instagram.android/com.instagram.android.activity.MainTabActivity
// Facebook: com.facebook.katana/com.facebook.katana.LoginActivity
try {
driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
} catch (MalformedURLException e) {
System.out.println(e.getMessage());
}
//Added 5 seconds wait so that the app loads completely before starting with element identification
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//Find Google Play element using ID property and click on it
driver.findElement(By.id("com.android.vending:id/search_box_idle_text")).click();
//Find 'Google Play Store' element and set the value Google
driver.findElement(By.id("com.android.vending:id/search_box_text_input")).sendKeys("Google");
//Press Enter key from Keyboard using any of the below methods
((AndroidDriver<MobileElement>) driver).pressKeyCode(66);
}
}
包测试;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.By;
导入org.openqa.selenium.Keys;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.remote.DesiredCapabilities;
导入io.appium.java_client.AppiumDriver;
导入io.appium.java_client.MobileElement;
导入io.appium.java_client.android.AndroidDriver;
公共类应用程序测试{
公共静态void main(字符串[]args){
//设置所需的功能
DesiredCapabilities=新DesiredCapabilities();
caps.setCapability(“deviceName”、“我的手机”);
caps.setCapability(“udid”、“redact”);//给出您手机的设备ID
caps.setCapability(“平台名”、“安卓”);
caps.setCapability(“平台版”、“7.1.1”);
caps.setCapability(“appPackage”、“com.android.vending”);
setCapability(“appActivity”、“com.google.android.finsky.activities.MainActivity”);
caps.setCapability(“noReset”、“true”);
//Instagram:com.Instagram.android/com.Instagram.android.activity.MainTabActivity
//Facebook:com.Facebook.katana/com.Facebook.katana.LoginActivity
试一试{
驱动程序=新的AndroidDriver(新的URL(“http://0.0.0.0:4723/wd/hub"(大写),;
}捕获(格式错误){
System.out.println(e.getMessage());
}
//增加了5秒钟的等待时间,以便应用程序在使用元素标识开始之前完全加载
试一试{
睡眠(5000);
}捕捉(中断异常e){
e、 printStackTrace();
}
//使用ID属性查找googleplay元素并单击它
driver.findElement(By.id(“com.android.vending:id/search\u box\u idle\u text”)。单击();
//查找“Google Play Store”元素并设置Google的值
driver.findElement(By.id(“com.android.vending:id/search\u box\u text\u input”)).sendKeys(“谷歌”);
//使用以下任一方法从键盘按Enter键
((AndroidDriver)driver)。按KeyCode(66);
}
}
导入的jar文件的屏幕截图:
首先,您没有显示AndroidDriver声明的位置 第二件事是,我并没有在你的附件中看到,你只是导入了硒 附属物 如果使用maven,pom中应该有类似的内容:
木卫一
希望这有帮助…您在哪里声明了驱动程序变量?没有对驱动程序的声明,可能在其他地方?添加了驱动程序声明后,我现在收到一个套接字异常错误:线程“main”中的异常org.openqa.selenium.webdrivexception:java.net.SocketException:软件导致的连接中止:recv失败它调用Android驱动程序。想法?为了澄清,我在一个物理设备上运行这个,不是模拟器,但我只通过电缆连接,不是无线连接。我注释了thread.sleep try and catch部分,它现在工作了。有没有办法让这一切顺利进行?我想暂停一下,以确保所有内容都正确加载。感谢您的回答,我尝试添加驱动程序声明,我现在收到一个套接字异常错误:线程“main”org.openqa.selenium.webdrivexception中的异常:java.net.SocketException:软件导致的连接中止:recv失败它调用Android驱动程序。我不认为您的解决方案可以避免此问题?为了澄清,我在物理设备上运行此功能,而不是在模拟器上运行此功能,但我只通过电缆连接,没有进行无线连接。我注释了thread.sleep try and catch部分,它现在正在工作。有没有办法让这一切顺利进行?我希望暂停以确保所有内容都正确加载。您可以使用显式等待。webDriverWait=new-webDriverWait(appiumDriver,30);webDriverWait.until(ExpectedConditions.element可禁用(element));
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>6.0.0</version>
</dependency>