package org.davieyang.testscripts;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidElement;
import org.openqa.selenium.Alert;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.FindBys;
import org.openqa.selenium.support.FindAll;
import org.openqa.selenium.remote.RemoteWebElement;
import io.appium.java_client.pagefactory.*;
import io.appium.java_client.ios.IOSElement;
import java.util.List;
import static io.appium.java_client.pagefactory.LocatorGroupStrategy.CHAIN;
import static io.appium.java_client.pagefactory.LocatorGroupStrategy.ALL_POSSIBLE;
public class PageFactoryDemo {
/**
* 对于WebElement类型的元素来说,使用FindBy注解
* WebElement类型的元素指的是浏览器或web view html UI
* 如果没有在Desired Capability中指定,则也可应用于Mobile Native Application
*/
@FindBy(locateStrategy)
WebElement webElement;
@FindBy(locateStrategy)
List<WebElement> webElementList;
/**
* 在Desired Capability指定了automationName自动化测试引擎,则
* 对于原生应用native app, 分别使用@AndroidFindBy @iOSXCUITFindBy //@SelendroidFindBy(老版本)
*/
@AndroidFindBy(locateStrategy)
AndroidElement androidElement;
@AndroidFindBy(locateStrategy)
List<AndroidElement> androidElementList;
@iOSXCUITFindBy(locateStrategy)
IOSElement iosElement;
@iOSXCUITFindBy(locateStrategy)
List<IOSElement> iosElementList;
@SelendroidFindBy(locateStrategy)
RemoteWebElement remoteWebElement;
@SelendroidFindBy(locateStrategy)
List<RemoteWebElement> remoteWebElementList;
/**
* 跨平台的原生App,需要使用@AndroidFindBy @iOSXCUITFindBy同时进行注解
*/
@AndroidFindBy(locateStrategy)
@iOSXCUITFindBy(locateStrategy)
MobileElement mobileElement;
@AndroidFindBy(locateStrategy)
@iOSXCUITFindBy(locateStrategy)
List<MobileElement> mobileElementList;
/**
* 全平台,使用@FindBy @AndroidFindBy @iOSXCUITFindBy 同时进行注解
*/
@FindBy(locateStrategy)
@AndroidFindBy(locateStrategy)
@iOSXCUITFindBy(locateStrategy)
RemoteWebElement remoteWebElement;
@FindBy(locateStrategy)
@AndroidFindBy(locateStrategy)
@iOSXCUITFindBy(locateStrategy)
List<RemoteWebElement> remoteWebElementList;
/**
* Chained定位方式,使用@FindBys @AndroidFindBys @iOSXCUITFindBys 进行注解,通过多种定位方式找到
* FindBys相当于在多种定位方式中取交集,例如@FindBys({@FindBy(locateStrategy1), @FindBy(locateStrategy2)})
* 相当于首先根据locateStrategy1找到对应元素,然后在这些元素中通过locateStrategy2再次查找元素
* 这类似于driver.findelement(locateStrategy1).findelement(locateStrategy2)
*/
// 第一种方式
@FindBys({@FindBy(locateStrategy1), @FindBy(locateStrategy2)})
@AndroidFindBy(locateStrategy1) @AndroidFindBy(locateStrategy2)
@iOSXCUITFindBy(locateStrategy1) @iOSXCUITFindBy(locateStrategy2)
RemoteWebElement remoteWebElement;
@FindBys({@FindBy(locateStrategy1), @FindBy(locateStrategy2)})
@AndroidFindBy(locateStrategy1) @AndroidFindBy(locateStrategy2)
@iOSXCUITFindBy(locateStrategy1) @iOSXCUITFindBy(locateStrategy2)
List<RemoteWebElement> remoteWebElementList;
// 第二种方式
@HowToUseLocators(androidAutomation = CHAIN, iOSXCUITAutomation = CHAIN)
@FindBys({@FindBy(locateStrategy1), @FindBy(locateStrategy2)})
@AndroidFindBy(locateStrategy1) @AndroidFindBy(locateStrategy2)
@iOSXCUITFindBy(locateStrategy1) @iOSXCUITFindBy(locateStrategy2)
RemoteWebElement remoteWebElement;
@HowToUseLocators(androidAutomation = CHAIN, iOSXCUITAutomation = CHAIN)
@FindBys({@FindBy(locateStrategy1), @FindBy(locateStrategy2)})
@AndroidFindBy(locateStrategy1) @AndroidFindBy(locateStrategy2)
@iOSXCUITFindBy(locateStrategy1) @iOSXCUITFindBy(locateStrategy2)
List<RemoteWebElement> remoteWebElementList;
/**
* Possible方式,这种定位方式使用@FindAll @AndroidFindAll @iOSXCUITFindAll
* FindAll相当于在多种定位方式中取并集,例如@FindAll({@FindBy(locateStrategy1), @FindBy(locateStrategy2)})
* 相当于取到所有符合locateStrategy1和locateStrategy2的元素
*/
@HowToUseLocators(androidAutomation = ALL_POSSIBLE, iOSXCUITAutomation = ALL_POSSIBLE)
@FindAll({@FindBy(locateStrategy1), @FindBy(locateStrategy2)})
@AndroidFindBy(locateStrategy1) @AndroidFindBy(locateStrategy2)
@iOSXCUITFindBy(locateStrategy1) @iOSXCUITFindBy(locateStrategy2)
RemoteWebElement remoteWebElement;
@HowToUseLocators(androidAutomation = ALL_POSSIBLE, iOSXCUITAutomation = ALL_POSSIBLE)
@FindAll({@FindBy(locateStrategy1), @FindBy(locateStrategy2)})
@AndroidFindBy(locateStrategy1) @AndroidFindBy(locateStrategy2)
@iOSXCUITFindBy(locateStrategy1) @iOSXCUITFindBy(locateStrategy2)
List<RemoteWebElement> remoteWebElementList;
}
JavaApp自动化测试系列[v1.0.0][PageFactory注解详解]
猜你喜欢
转载自blog.csdn.net/dawei_yang000000/article/details/108359805
今日推荐
周排行