我正在android的clock应用程序上尝试一段appium自动化代码,但我的代码倾向于跳过滚动逻辑。我还尝试了findelement()和gettext()来标识该元素,但仍然没有成功。代码如下:
package com.test.Clock;
import org.testng.annotations.Test;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.PerformsTouchActions;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import org.testng.annotations.BeforeClass;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoSuchFrameException;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.touch.TouchActions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterClass;
public class Clock {
static WebDriver driver;
//static AndroidDriver driver;
@BeforeClass public void setUp() throws MalformedURLException{ DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("BROWSER_NAME", "Android"); capabilities.setCapability("VERSION", "7.0"); capabilities.setCapability("deviceName","IFZDSCVCKJUWRSOV"); capabilities.setCapability("platformName","Android"); capabilities.setCapability("--session-override",true); capabilities.setCapability("noReset",true); capabilities.setCapability("appPackage", "com.android.deskclock"); capabilities.setCapability("appActivity","com.android.deskclock.AlarmClock"); //driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
}
@Test public void testCal() throws InterruptedException { System.out.println("inside test");
WebElement createAlarm=driver.findElement(By.id("amigo:id/amigo_icon0")); //WebElement createAlarm=driver.findElement(By.xpath("//android.widget.Button[@text='Create']"));
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS); createAlarm.click();
// WebElement plus=driver.findElement(By.id("amigo:id/amigo_numberpicker_input")); //plus.click();
// driver.swipe(6, -188, 0, 0, 2);
try {
WebElement frame1=driver.findElement(By.id("com.android.deskclock:id/add_alarm_activity_hourNumber"));
driver.switchTo().frame(frame1);
}
catch (NoSuchFrameException e) {
System.out.println(e.getMessage());
}
Thread.sleep(2000);
WebElement gettime=driver.findElement(By.id("com.android.deskclock:id/add_alarm_activity_hourNumber"));
Thread.sleep(2000);
System.out.println(gettime.getText());
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, Double> swipeObject = new HashMap<String, Double>(); System.out.println(swipeObject);
swipeObject.put("startX", 3.0);
System.out.println(swipeObject);
swipeObject.put("startY", -183.8);
System.out.println(swipeObject);
swipeObject.put("endX", 0.022);
System.out.println(swipeObject);
swipeObject.put("endY", 0.02);
System.out.println(swipeObject);
swipeObject.put("duration", 2.0);
//HashMap[] params = { swipeObject };
js.executeScript("mobile: scroll", swipeObject);
System.out.println(js);
/*JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>(); scrollObject.put("direction", "up");
js.executeScript("mobile: scroll", scrollObject);*/
Thread.sleep(2000);
WebElement equalTo=driver.findElement(By.id("com.android.deskclock:id/add_alarm_save")); equalTo.click();
}
@AfterClass public void teardown(){
//close the app driver.quit();
}
}
我无法在使用appium的android设备上向下滚动移动页面。我试过驾驶。滚动到(元素),它不会向下滚动到指定的元素。我尝试过使用Actions类,但我遇到了一个错误,因为“方法尚未实现”。我尝试过使用Javascript的另一种方法,但也不起作用。有人提出建议。 以下是代码:
问题就在这里。我想在我的设备(三星Galaxy Ace 2)上运行我的Android Studio应用程序。但对我没什么用。告诉我我错过了什么: 2)安装了ADB驱动程序(在设备管理器中可以看到Android Composite ADB接口) 3)ADB设备列表仍然清晰,即使我重置服务器(ADB kill-server,ADB start-server,ADB devices-设备列表清晰) 4)
问题内容: 我创建了一个简单的 CollapsingToolbarLayout ,它的工作原理很像。我的问题是,如果我尝试在 nestedscrollview 上使用 浮动 滚动,则在松开手指时它会停止。正常的滚动工作应该像它应该的那样。 我的活动代码未 更改= >自动生成的空活动。(我只是单击了在android studio中创建新的空活动并编辑了XML)。 我在这里读到,imageview上的
无法从Mac PC上android设备的appium inspector检查元素。 Mac:10.13 Appium:1.7.2 Appium Inspector:1.5.3 Android设备模拟器:Pixel-2 Android版本:8.0 我可以为同一应用程序检查iOS(iPhone设备)的元素,但无法在android中检查元素。 当我点击appium dmg 1.5.3的inspect图标
我试图使用ionic2/Angular2和typecript自动构建混合应用程序。 我使用C#编写代码。测试在BDD-specflow版本中:iOS:9.3.1 Xcode:7.3 Appium:1.4.13 将上下文切换到WEBVIEW后,我无法识别元素。 使用下面的代码调用IOSDriver 将功能设置为 我是否以正确的方式设置了功能? 尝试解决方案: 我检查使用浏览器名称能力作为空白/Saf
无法使用appium在我的ios应用程序屏幕上滑动。 我正在使用appium 1.3.1和iso 8 iphone 6模拟器。 我的ios屏幕分为两个屏幕,上面有图像,下面有数据。。。 在设备上,我们可以在任何地方滑动,但不能使用appium 我试图运行Appium 1.3.1iOSSDK 8.1(Xcode 6.1)