使用Java的Appium(Android)中的ADB超时错误
这是我的密码。它应该打开浏览器导航到谷歌,并在搜索框中键入“Appium”。 它打开chrome浏览器并导航到谷歌浏览器,但在等待几秒钟后,它会直接显示错误使用Java的Appium(Android)中的ADB超时错误,android,appium,Android,Appium,这是我的密码。它应该打开浏览器导航到谷歌,并在搜索框中键入“Appium”。 它打开chrome浏览器并导航到谷歌浏览器,但在等待几秒钟后,它会直接显示错误 public class androidDevice { AppiumDriver driver; @BeforeTest public void Appium_device() throws MalformedURLException, Exception { { DesiredCapabilities cap
public class androidDevice {
AppiumDriver driver;
@BeforeTest
public void Appium_device() throws MalformedURLException, Exception {
{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "43f0a801");
capabilities.setCapability("chromedriverExecutable", "D:\\Soumya\\Eclipse\\chromedriver.exe");
capabilities.setCapability(CapabilityType.VERSION, "8.1.0");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "com.android.chrome");
capabilities.setCapability("appActivity", "com.google.android.apps.chrome.Main");
driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"),capabilities);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
}
@Test
public void launch() throws Exception {
try {
//driver.get("https://us.justdial.com");
driver.get("https://www.google.com/");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("com.android.chrome:id/search_box_text")).sendKeys("Appium");
driver.quit();
System.out.println("site hit");
}
catch (Exception e) {
System.out.println("site not accessed");
throw (e);
// TODO: handle exception
}
}
}
预期结果是:它应该打开浏览器导航到谷歌,并在搜索框中键入“Appium”
实际结果:
应用结果
FAILED: launch org.openqa.selenium.WebDriverException: An unknown
server-side error occurred while processing the command. Original
error: Error attempting to start URI. Original error: Error: Error
executing adbExec. Original error: 'Command
'C\:\\Users\\soumya.katti\\android-sdks\\platform-tools\\adb.exe -P
5037 -s 43f0a801 shell am start -W -a android.intent.action.VIEW -d
https\://us.justdial.com com.android.chrome' timed out after 20000ms';
Stderr: ''; Code: 'null' (WARNING: The server did not provide any
stacktrace information)
Eclipse结果:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Error attempting to start URI. Original error: Error: Error executing adbExec. Original error: 'Command 'C\:\\Users\\soumya.katti\\android-sdks\\platform-tools\\adb.exe -P 5037 -s 43f0a801 shell am start -W -a android.intent.action.VIEW -d https\://us.justdial.com com.android.chrome' timed out after 20000ms'; Stderr: ''; Code: 'null' (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 40.05 seconds
你有30秒的隐含等待时间。这意味着WebDriver有30秒的时间来查找DOM中定义的某个元素。如果在这样的时间内没有,测试将失败,出现您显示的异常。如果进程在尝试执行任务时超时,则可能可以通过增加隐式等待来解决此问题:
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
根据您在此测试中的经验,设置为60、120或合理的时间量
请注意,隐式等待是针对WebDriver的每个命令,而不是整个测试,因此它实际上不应该太大
另一种可能是,您要查找的项目在页面布局中找不到。也许现在看不见,也许你所处的环境与你所期望的不同
仔细检查测试用例的执行情况,看看会发生什么。尝试添加一些计时器以查看隐式等待何时开始
您可以在和了解有关隐式和显式等待的更多信息。您的隐式等待时间为30秒。这意味着WebDriver有30秒的时间来查找DOM中定义的某个元素。如果在这样的时间内没有,测试将失败,出现您显示的异常。如果进程在尝试执行任务时超时,则可能可以通过增加隐式等待来解决此问题:
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
根据您在此测试中的经验,设置为60、120或合理的时间量
请注意,隐式等待是针对WebDriver的每个命令,而不是整个测试,因此它实际上不应该太大
另一种可能是,您要查找的项目在页面布局中找不到。也许现在看不见,也许你所处的环境与你所期望的不同
仔细检查测试用例的执行情况,看看会发生什么。尝试添加一些计时器以查看隐式等待何时开始
您可以在和处了解有关隐式和显式等待的更多信息。我尝试过,但不起作用。我还尝试删除了find elements代码,如果直接使用driver.close进行尝试,它仍然会显示与以前相同的错误。我尝试了,但不起作用。我还试图删除find elements代码,如果直接使用driver.close尝试,它仍然显示与以前相同的错误。