当前位置: 首页 > 知识库问答 >
问题:

何时何地使用By class的FindElement方法

容柏
2023-03-14

我对Selenium体系结构有基本了解,其中搜索上下文是由Web驱动程序接口实现的主接口,该接口由各种浏览器驱动程序类扩展。通常,我们在selenium项目中遵循POM,并按类定义每个对象-

By addButton=By.Id("asdf");

但刚刚意识到我们甚至可以-

addButton.FindElement(By.XPath("ABC"). 

但这不会返回driver这样的元素。FindElement(添加按钮)

何时使用上述语句?

共有1个答案

潘国源
2023-03-14

下面使用了Java绑定中的术语,但C#绑定也是如此:

@spcial是对的,Selenium中没有定义“By.findElement(By)”。然而,有一个“By.findElement(SearchContext)”的定义,我将在下面解释:

在Selenium中,有一个名为SearchContext接口,然后有By类。

SearchContext可以是WebElementWebDriver

现在您有两个选项来查找元素(使用伪代码):

1) SearchContext。findElement(通过…)

2) By。findElement(搜索上下文…)

两者都做同样的事情!

假设您有一个驱动程序和By变量,如下所示:

WebDriver driver = new FirefoxDriver();
By addButtonLocator = By.id("asdf");

现在,您可以通过两种方式找到您的元素:

1)driver.find元素(addButtonLocator);

2) addButtonLocator。findElement(司机)

又来了。两者都做同样的事情,这只是像这样“阅读”这些表达的另一种方式:

1) "take the driver and search for an element using this By-statement"

2) "take the By-statement and search for an element that fits this statement within driver"

如前所述,如果您使用已识别的元素,则可以使用更小的范围来代替驱动程序。

 类似资料:
  • 除非类是私有的或者是Java API的一部分,否则我认为使用static不像使用OOP那样有优势。 更新:在Java中找到有用的答案:何时使用静态方法/变量

  • 我正在阅读OracleDocGenericmethod中的泛型方法。当它说什么时候使用通配符和什么时候使用泛型方法时,我对比较感到很困惑。引用文档。 我们本可以在这里使用通用方法: [...]这告诉我们类型参数正被用于多态;它的唯一作用是允许在不同的调用站点使用各种实际的参数类型。如果是这样的话,应该使用通配符。通配符旨在支持灵活的子类型,这就是我们在这里试图表达的。 我们不觉得像《代码》(Col

  • 问题内容: 这听起来很基础…有人可以解释该方法的使用以及何时有效使用此方法吗? 在Google上进行了搜索,但找不到任何好的资源。 问题答案: 在大多数语言中,或者等效方法仅保证对象可以用文本表示。 这对于日志记录,调试或任何其他需要以字符串形式呈现遇到的任何对象的情况特别有用。 对象通常实现自定义行为,以便该方法实际上告诉您有关对象实例的信息。例如,一个类可能会覆盖它以返回“姓氏,名字”,而一个

  • 我正在用Spring web-flux和Reactor一起使用,对我来说,不清楚RestController方法何时返回

  • 我在想什么时候使用静态方法?假设我有一个类有几个getter和setter,一两个方法,并且我希望这些方法只能在类的实例对象上调用。这是否意味着我应该使用静态方法? 示例: ...或: 我很困惑!

  • 问题内容: 如何限制/减少的超时时间?我正在抓取一个网站。对于出现在成千上万页中的表,我可以有一个元素说明没有信息,也可以有一个表。我搜索这些元素之一,而当缺少时,我搜索其他元素。问题在于,当其中一个不存在时,要花很长时间才能超时。这段时间可以缩短吗?可以为每个元素定义超时期限吗?我发现有关等待的所有内容都是为了延长超时时间…如果可以,我正在.NET环境中工作。 问题答案: 延迟是由“隐式等待”设