栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

selenium@FindBy与driver.findElement()

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

selenium@FindBy与driver.findElement()

粗略地讲,

@FindBy
这只是查找元素的另一种方式(
driver.findElement()
如您所说,“通常的方式” )。

但是,该注释的最大优势不是它本身。最好用于支持
PageObject模式

简而言之, PageObject 模式告诉您为要使用/测试 的系统的每个页面创建一个类

因此,与其拥有(通常的

driver.findElement()
代码):

public class TestClass {    public void testSearch() {        WebDriver driver = new HtmlUnitDriver();        driver.get("http://www.google.com/");        Element searchBox = driver.findElement(By.name("q"));        searchBox.sendKeys("stringToSearch");        searchBox.submit();        // some assertions here    }}

您将为页面定义一个类(使用

@FindBy
的元素带有注释):

public class GooglePage {    @FindBy(how = How.NAME, using = "q")    private WebElement searchBox;    public void searchFor(String text) {        searchBox.sendKeys(text);        searchBox.submit();    }}

并像这样使用它:

public class TestClass {    public void testSearch() {        WebDriver driver = new HtmlUnitDriver();        driver.get("http://www.google.com/");        GooglePage page = PageFactory.initElements(driver, GooglePage.class);        page.searchFor("stringToSearch");        // some assertions here    }}

现在,我知道这乍看起来似乎很冗长,但请稍等一下,考虑为该页面准备 几个测试用例 。如果

searchBox
更改名称怎么办?(从
name

"q"
id
,说
query
吗?)

在什么代码中会有更多更改才能使它再次运行?一个有或没有页面对象(和

@FindBy
)的对象?如果页面的结构发生了很大变化,使用哪种代码进行维护会更容易?

还有其他一些优点,例如像这样的附加注释:

@FindBy(name = "q")@CacheLookupprivate WebElement searchBox;

@CacheLookup
使得该元素的查找仅发生一次。之后,它将被缓存在变量中,并且访问速度更快。

希望这可以帮助。有关更多详细信息,请确保检查
PageFactory
PageObject模式



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号