Selenium的POM和PAGEFACTORY的理解

对于selenium的理解,主要集中在POM和PAGEFACTORY上,这两个理解清楚了,核心就理解清楚了,CSDN上有一篇文章写的很好很清楚,我转载过来,直接可以读它:

http://blog.csdn.net/kittyboy0001/article/details/25219053


摘录一段比较重要的话:

BaiduSearchPage baiduPage = PageFactory.initElements (driver,BaiduSearchPage.class); 这行代码。PageFactory负责初始化了Page里的元素,amazing,用起来就是这么的优雅。 那么下来,我就要问了:PageFactory是怎么定位元素的呢?

原来PageFactory初始化元素有一个惯例,样例中将WebElement的名称定为wd,那么PageFactory将按类似以下的形式对其进行初始化:

driver.findElement(By.id("wd"));

PageFactory认为wd是HTML元素的id或者name字段的值,并且优先从id开始查找。至此,我们终于知道怎么回事了。

这段话看起来很好理解,但是在页面跳转的时候就容易出现问题,当页面跳转到另一个页面时,需要再调用 PageFactory.initElements 去初始化页面,这是容易忽视的地方,以为driver传进去以后就不用再调用了。


其他的就不再赘述了。

Selenium是一个流行的自动化测试工具,用于Web应用程序的浏览器兼容性测试。POM(Project Object Model)是Selenium WebDriver的一个核心特性,它使用XML文件来组织测试项目结构和配置。以下是一个简单的Selenium POM.xml文件的例子: ```xml <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example.selenium</groupId> <artifactId>selenium-test</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!-- Selenium WebDriver --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> <!-- TestNG for test framework --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.4.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <configuration> <suiteXmlFiles> <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> </plugins> </build> </project> ``` 在这个例子中: - `<modelVersion>`指定了项目的模型版本。 - `<dependencies>`部分包含了Selenium WebDriver和TestNG库的依赖。 - `<build>`标签下的`<plugins>`部分配置了SureFire插件,指定测试套件`testng.xml`的位置。 要在测试类中编写Selenium测试,创建一个`.java`文件并添加类似这样的内容: ```java import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class MyTest { private WebDriver driver; @BeforeClass public void setUp() { System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); driver = new ChromeDriver(); } @Test public void testSearch() { driver.get("https://www.google.com"); WebElement searchBox = driver.findElement(By.name("q")); searchBox.sendKeys("selenium testing"); searchBox.submit(); // 更多测试步骤... } @AfterClass public void tearDown() { driver.quit(); } } ``` 别忘了将`chromeDriver`路径替换为你实际的ChromeDriver安装位置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值