【问题标题】:FindBy: How + using vs. name of location strategyFindBy: How + using vs. 位置策略名称
【发布时间】:2015-07-23 08:09:53
【问题描述】:

使用 Selenium WebDriver,

使用 @FindBy 注释您的定位器时,您可以选择使用方式 + 使用的组合:

@FindBy(how = How.ID, using = "foobar") WebElement foobar;

或者你可以像这样直接使用定位策略:

@FindBy(id = "foobar") WebElement foobar;

我总是使用较短的第二个版本的方式。

我想不出我应该使用更长的 How+using 版本的任何理由。

所以我的问题是:

有哪些情况需要使用[How + using]?

如果没有,为什么还要存在这个更长的版本?

【问题讨论】:

    标签: selenium selenium-webdriver annotations webdriver findby


    【解决方案1】:

    问候和问候,

    如果您听说过@FindBy(how=How.CSS , using="locator"),您可能想了解如何操作所有driver.findElement(By) REST 调用。 Selenium 基于 REST 调用保证 DOM 中是否存在所谓的 WebElement 对象。 我们总是可以用户@FindBy(id="localtor") 基本上说, '嘿,我通过 id 作为 keylocator 作为值来专门为此 HTML 标记执行 REST 调用。

    话虽如此,

    @FindBy( how=How.CSS, using="locator" ) 合作为我们带来了完全不同的游戏玩法...... 认识@CacheLookup, 它将帮助您使用浏览器缓存系统来定位浏览器缓存存储中的所有内容,并带来大量性能(REST 调用运行时约 50% 折扣)

    您可以在此处阅读更多内容: http://toolsqa.com/selenium-webdriver/cachelookup-in-pageobjectmodel/

    享受:)

    【讨论】:

      【解决方案2】:

      我搜索了可用的文档,但是当我们可以直接使用位置策略的名称时,找不到使用 @FindBy 注释的 How + Using 方式的原因。

      如果您查看在 cmets 中编写文档的方式here

      您可以通过同时指定“how”和“using”来使用此注释,也可以通过指定具有适当值的位置策略之一(例如:“id”)来使用。这两个选项都将委托给 By 类中匹配的 By 方法。

      似乎毫无疑问,How+Using 能做的,同样可以用定位策略的名字来做。

      现在,为什么两者都存在并且可以更好地保留较长的版本,目前似乎没有直接提及。如果需要,您可以在Selenium community 中添加查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-03
        • 1970-01-01
        • 2013-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-08
        • 2019-05-29
        相关资源
        最近更新 更多