【问题标题】:Why return type of findElement(By by) is WebElement?为什么 findElement(By by) 的返回类型是 WebElement?
【发布时间】:2018-08-26 16:15:06
【问题描述】:

为什么 findElement(By by) 的返回类型是 WebElement?

我知道文档中提到返回类型是 Webelment,但是谁能解释一下为什么返回类型是 Webelment。

我对这个主题的研究

因为我们使用 findElement 搜索元素,而 webelement 类用于表示 HTML 元素。

如果我的想法正确或有任何具体原因,请告诉我

【问题讨论】:

  • 是的,如果你试图找到一个元素,返回类型应该是一个元素,这似乎是合理的。不过,我对引发这个问题的原因很感兴趣 - 听起来您希望它有一个 不同的 返回类型......您希望它是什么,为什么?
  • @Jon Skeet 我的想法是返回类型可能是布尔值,因为我们正在搜索一个元素并且可能是,如果找到返回 true 否则为 false,
  • @SainathPawar 简单地检测一个元素是否存在并不像他们给你的那样灵活或强大。您不能将clicksendKeys 发送到boolean。更不用说测试它是否已启用、选择或显示。

标签: java selenium selenium-webdriver webdriver


【解决方案1】:

你没看错。根据 Java Docs findElement() 方法返回 Webelment

要回答您的问题为什么返回类型是 Webelment,对您的反问是 您为什么要找到该元素?

粗略的回答是您需要交互(以某种方式)与可能是以下任一元素的元素:

  • 标题
  • 文本字段
  • 密码字段
  • 按钮
  • 选择元素

您正在搜索 WebElement,因为您可以:

  • 断言 WebElement 条件(isDisplayed()isEnabled())。
  • 与其互动(click()sendKeys())。
  • 检索其任何属性。 (getAttribute(), getCssValue())
  • 等待 WebElement 处于特定条件 (isSelected())。

因此,出于上述任一原因,您需要获取您通过 findElement(By by) 传递的 WebElement 的引用,如果您的搜索成功,则确切的 WebElement em>WebElement 被返回。现在,您可以根据可行性在 WebElement 上调用任何登记的methods(),如下所示:

  • clear()
  • click()
  • findElement(By by)
  • findElements(By by)
  • getAttribute(java.lang.String name)
  • getCssValue(java.lang.String propertyName)
  • getLocation()
  • getSize()
  • getTagName()
  • getText()
  • isDisplayed()
  • isEnabled()
  • isSelected()
  • sendKeys(java.lang.CharSequence... keysToSend)
  • submit()

如果 findElement() 的返回类型是 Boolean(根据您的评论更新),则不可能调用以下任何 methods()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    相关资源
    最近更新 更多