PageFactory类主要用于分离页面元素和模拟用户浏览器操作代码。下面以一个小例子来分享PageFactory的使用方法。 现在我们假设要对一个在线的BMI计算器进行页面分类。那么,在做好这道菜前,我们需要准备好必须用品。
如果你用的浏览器和我一样也是Chrome,点击右键,选择“审查元素”,浏览器将会出现类似于Firebug的定位器,Chrome有这个自带的功能,不需要安装插件。
@FindBy (css="div.test-result.size14.stress") protected WebElement printBMI; //这个printBMI就可以随意取名了
BMI_MainPage.java 接下来,新建为名 BMI_Calculator.java的Junit4文件,用来模拟用户的浏览器操作。 1.创建BMI_MainPage对象 BMI_MainPage mainPage; 2. 执行测试时加载driver(driver是ChromeDriver的实例) mainPage=new BMI_MainPage(driver); 3.用mainPage对象时不必考虑元素的具体定位方法,仅考虑BMI_MainPage类中有多少可用的自定义页面元素 mainPage.height.sendKeys("180"); 还记的这个height吗?它就是在页面定位是找到的id=height或name=height。想起来了吗?如果不用pageFactory,以driver.findElement(By.id("height"))来定位元素才需要考虑是用id,name,LinkText还是xpath或者css。如何定位在BMI_MainPage已经考虑过了。 BMI_Calculator.java 运行结果:您的BMI指数为 18.5 如果输出的变量名为BMI,运行结果为:18.5 这时我们才发现,这是因为 @FindBy (css="div.test-result.size14.stress") WebElement printBMI; 定位到的div 包含了 @FindBy (css="span.stress.red1") protected WebElement BMI; 定位到的span。 这与 用driver.findElement(By.className("test-result size14 stress")).getText()输出的文本包含了 用driver.findElement(By.className("stress red1")).getText()输出文本等价。 页面的样式层级如下: <div class="test-result size14 stress">您的BMI指数为 <span class="stress red1">18.5 </span> </div>
關連文章 |
|