[PageFactory在Appium iOS自动化中使用时似乎很慢

问题描述 投票:0回答:1

我们正在使用Appium自动化本机iOS应用程序。我们正在使用PageFactory设计模式。对于单击元素,这是代码正在使用:

  1. 等待元素可见。
  2. 单击元素

public  Boolean waitUntilVisible(WebElement element)
{
	try {
		wait.until(ExpectedConditions.visibilityOf(element));
		return true;
	}catch (Exception e)
	{}
	return false;
}

public boolean click(WebElement element)
{
	//Click on the element and return true if successful and false if unsuccessful.
	try 
	{
        waitUntilVisible(element);
		element.click();
	} catch (Exception e) {}
	return false;
}

整体执行似乎要花费太多时间。根据我的理解,waitUntilVisible等待直到元素的isDisplayed()变为true。当我们使用PageFactory时,我假设元素标识发生两次。1.在检查可见性之前,将首先标识该元素。2.单击之前将再次标识相同的元素。由于我们在许多地区都使用xpath,因此元素标识通常需要更长的时间。只需单击一下,即可两次识别相同的元素,从而进一步增加了时间。我想知道任何存储已标识元素的解决方案,以便它不会花费时间来再次标识它。所以我修改了我的代码,如下所示:

public  WebElement waitUntilVisible(WebElement element)
{
	try {
		return wait.until(ExpectedConditions.visibilityOf(element));
	}catch (Exception e)
	{}
	return null;
}

public boolean click(WebElement element)
{
	//Click on the element and return true if successful and false if unsuccessful.
	try 
	{
        WebElement remoteElement = waitUntilVisible(element);
		remoteElement.click();
	} catch (Exception e) {}
	return false;
}

此方法似乎没有节省时间。

我还有其他方法可以减少执行时间。

注意:我们使用WebElement而不是IOSElement,以便在IOS Automation中也可以使用在桌面自动化中使用的相同代码。

appium-ios page-factory
1个回答
0
投票

使用

mobileElement = driver.findElement(MobileBy.locator("locator"));
appiumDriverActions.moveToElement(mobileElement).click().perform();
appiumWait.until(ExpectedConditions.condition(Element/locator));

而不是

mobileElement = driver.findElement(MobileBy.locator("locator"));
mobileElement.click();

在某些情况下,使用iOS13的新默认VC,最好移动moveToElement然后使用操作单击代替element.click();

有关更多详细信息,https://medium.com/@ayman.ibrahim.mansour/appiums-best-way-to-deal-with-the-new-view-controller-presentation-in-ios-13-6d801fcc3cb

© www.soinside.com 2019 - 2024. All rights reserved.