博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Webdriver中PageFactory的正确用法
阅读量:4951 次
发布时间:2019-06-12

本文共 2841 字,大约阅读时间需要 9 分钟。

以博客园登录、退出为例:

下面是LoginPage的源码:

public class LoginPage {
private WebDriver driver; @FindBy(how = How.ID, id = "input1") private WebElement userName; @FindBy(how = How.ID, id = "input2") private WebElement passWord; @FindBy(how = How.ID, id = "signin") private WebElement loginButton; public LoginPage(WebDriver driver) {
this.driver = driver; PageFactory.initElements(driver,this); PageFactory.initElements一般放在自己的构造函数中,这样别的类调用的时候能保证每次都调用成功。 } public void login(String username, String password) {
userName.clear(); passWord.clear(); userName.sendKeys(username); passWord.sendKeys(password); loginButton.click(); driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS); } } 下面是Mainpage的代码:
public class MainPage {
private WebDriver driver; @FindBy(how = How.LINK_TEXT, linkText = "登录") WebElement loginLink; @FindBy(how = How.LINK_TEXT, linkText = "退出") WebElement logoutLink; public MainPage(WebDriver driver) {
this.driver = driver; PageFactory.initElements(driver,this); } public void openMainPage(String url) {
driver.get(url); //loginLink = driver.findElement(By.linkText("登录")); //logoutLink = driver.findElement(By.linkText("退出")); } public void login(String userName, String passWord) {
loginLink.click(); WebDriverWait wait = new WebDriverWait(driver,300); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("input1"))); LoginPage loginPage = new LoginPage(driver); loginPage.login(userName,passWord); } public void logout() {
logoutLink.click(); LogoutPage logoutPage = new LogoutPage(driver); logoutPage.logout(); } }
下面是测试用的TestPage的代码:
public class TestPage {
WebDriver driver; @BeforeTest public void setUp() {
ChromeOptions options = new ChromeOptions(); options.addArguments("--start-maximized", "allow-running-insecure-content", "--test-type"); options.addArguments("--user-data-dir="+System.getenv("USERPROFILE")+"/AppData/Local/Google/Chrome/User Data/Default"); System.setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe"); //先设置这个 driver = new ChromeDriver(options);//再选择浏览器 } @Test public void testMainPage() throws Exception {
//MainPage mainPage = PageFactory.initElements(driver,MainPage.class); MainPage mainPage =new MainPage(driver); 有些人把PageFactory放在这里调用,其实是不合理的,这样容易漏掉LoginPage里的PageFactory mainPage.openMainPage("http://www.cnblogs.com"); mainPage.login("WebdriverTest","Password123!"); mainPage.logout(); } }
 

转载于:https://www.cnblogs.com/scodong/p/4792050.html

你可能感兴趣的文章
教练技术的小应用
查看>>
.net Tuple特性
查看>>
Java基础常见英语词汇
查看>>
iOS并发编程笔记【转】
查看>>
泛型 T的定义<1>
查看>>
thinkphp dispaly和fetch的区别
查看>>
08号团队-团队任务5:项目总结会
查看>>
mybatis 插入数据 在没有commit时 获取主键id
查看>>
SQL2005 删除空白行null
查看>>
lightoj 1030 概率dp
查看>>
重新注册.NET
查看>>
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
查看>>
Vagrant入门
查看>>
python and 我爱自然语言处理
查看>>
第3讲:导入表的定位和读取操作
查看>>
echarts-柱状图绘制
查看>>
mysql备份与恢复
查看>>
混沌分形之迭代函数系统(IFS)
查看>>
VS2013试用期结束后如何激活
查看>>
边框圆角Css
查看>>