gpt4 book ai didi

selenium - 使用新的 find 方法扩展 WebElement

转载 作者:行者123 更新时间:2023-12-02 22:10:44 26 4
gpt4 key购买 nike

我有一些经常使用的自定义查找方法,而不是 WebDriver.findElement 和 WebDriver.findElements。这些方法采用包含“按”定位器和正则表达式的自定义定位器对象,并返回与“按”定位器匹配且其文本与正则表达式匹配的一个或多个 WebElement。

这些在很多场合都非常有用,我想为 WebElement.findElement 和 WebElement.findElements 提供相同的功能。我可以创建一个新类来实现 WebElement 接口(interface),并且还包含这些新的查找方法,但我很困惑这是否真的有效。毕竟,当我运行 FireFox 时,驱动程序返回的元素是 FireFoxWebElements。当我与 IE 运行时,它们是 InternetExplorerElements。这两个都实现了 WebElement,但它们与我实现 WebElement 的自定义类完全无关,对吗?它们不会有这种额外的功能,并且它们不能被视为我的自定义类,因为它们......不是。

由于 WebDriver.findElement(s) 是 WebElements 的唯一“源”,也就是说,它是 WebElements 到达我的代码的基本方式,因此我可以更改我的自定义 findElement(s) 方法(调用 WebDriver.findElement(s) 方法)吗? findElement(s),最终)为任何包含我的特殊 element.find 方法的 WebElement 返回一个新的自定义包装器?这样,到达我的代码中的所有 WebElement 都将是这些带有我想要的额外查找方法的自定义元素。正确的?如果是这样,这样的包装类会是什么样子?

最佳答案

更简洁的方法是将 By 进行子类化。类,并为 By.findElement() 提供自定义实现和By.findElements() 。该架构正是针对这种类型的可扩展性而设计的。这个By然后子类可以作为参数传递给 findElement()findElements()两者的方法WebDriverWebElement没有问题。

或者,您可以重新调整自定义查找方法的用途。如果他们目前采取 WebDriver对象,考虑将其更改为 SearchContext参数,这是 WebDriver 的接口(interface)和WebElement延长。 SearchContextfindElement() 的实际来源和findElements()方法。

关于selenium - 使用新的 find 方法扩展 WebElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com