selenium(六)Page Object模式(使用selenium的PageFactory)
思想
以常见网站,有两个页面 登录页面LoginPage和主页HomePage
LoginPage:使用已初始化的driver,初始化登录页需要用到的element,每个方法就是测试用例,如登录成功,登录失败等,每个方法返回下一个页面或element,供断言使用。
HomePage:使用已初始化的driver,初始化主页需要用到的element(包括需要断言的element)
PageObject 类
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; public class PageObject { private String url="http://www.baidu.com"; //声明所有页面中用到的元素,作为类中的变量。 //将@FindBy注解通过对应的定位方法找到的元素赋值给成员变量 @FindBy(xpath = "//input[@id='kw']") public WebElement input; @FindBy(xpath = "//input[@id='su']") public WebElement submit; public PageObject(WebDriver driver){ initPage(driver); } private void initPage(WebDriver driver){ //打开网页 driver.get(url); //使用selenium的pageFactory,完成元素的初始化 PageFactory.initElements(driver,this); } //使用搜索 public HomePage search(){ input.sendKeys("12306"); submit.click();
return new HomePage(); }
//其他情况的用例... }
测试类
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.Assert; import org.testng.annotations.Test; public class Test1 { @Test public static void test() { System.setProperty("webdriver.chrome.driver","E:\\chromedriver_win32\\chromedriver.exe"); WebDriver driver=new ChromeDriver(); PageObject pageObject=new PageObject(driver); HomePage homePage = pageObject.search(); Assert.assertTrue(homePage.getTitle().contains("百度"),"断言失败"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具