我试图使用触摸动作类使用滑动找到一个元素但是Appium服务器抛出一个错误,指出该命令存在问题。我试图使用触摸动作类使用坐标从一个移动放到另一个。我的代码如下:
@Test(priority=4)
public void selectprod()
{
drivertest.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
WebElement categ= drivertest.findElementsByName("See All").get(1);
categ.click();
TouchAction abc=new TouchAction(drivertest);
abc.longPress(479, 754).moveTo(0, -500).perform();
if (drivertest.findElement(By.name("Pragnya Manufacturer")).isDisplayed())
{
drivertest.findElement(By.name("Pragnya Manufacturer")).click();
}
}
服务器抛出此错误如下:
服务器未响应错误
答案 0 :(得分:0)
我可以立即告诉你4项改进:
最重要 - 尽量不要使用隐式等待。
WebDriverWait wait = new WebDriverWait(driver, 60); //60 is the wait time in seconds
wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
请使用此代码块进行滚动,将starty
和endy
更改为更改滚动长度和方向。
public void scrollDown()
{
Dimension size = driver.manage().window().getSize();
int starty = (int) (size.height * 0.7);
int endy = (int) (size.height * 0.2);
int startx = size.width / 2;
driver.swipe(startx, starty, startx, endy, 800);
}
如果元素不可见,函数isDisplayed()
将抛出异常,请用try
和catch
包围它。
你只滚动一次,也许元素位于表格的下方,我建议做一个for()
循环(不要忘记为滚动迭代添加一个限制)
答案 1 :(得分:0)
public static void swipeLeft(AppiumDriver<MobileElement> driver)
{
Dimension size = driver.manage().window().getSize();
int startx = (int) (size.width * 0.8);
int endx = (int) (size.width * 0.16);
int starty = (int)(size.height * 0.75);
driver.swipe(startx, starty, endx, starty, 1000);
}
希望这会有所帮助