Selenium中SearchContext和WebDriver接口之间有什么区别,或者它们之间是什么关系?

时间:2020-01-15 05:33:04

标签: java selenium selenium-webdriver interface webdriver

我在某个地方可以同时使用

WebDriver driver = new FirefoxDriver()

SearchContext driver = new FirefoxDriver()

我很困惑,这两个不同的界面有什么区别?

4 个答案:

答案 0 :(得分:1)

SearchContext

SearchContext是一个接口,是用于应用程序搜索的上下文信息的运行时容器。它包含与搜索有关的元信息,并且可以保存对外部上下文的引用,这可能对搜索和安全性有用。用于搜索时,它包含对AppsWebContext的引用,并且可以通过getAppsContext获得。此上下文将传递给大多数应用程序插件代码,在这些代码中,自定义实现可以获取运行时上下文信息。


界面SearchContext

SearchContext接口具有2个(两个)子接口:

  • WebDriver
  • WebElement

实现类为:

  • ChromeDriver
  • EdgeDriver
  • EventFiringWebDriver
  • FirefoxDriver
  • InternetExplorerDriver
  • OperaDriver
  • RemoteWebDriver
  • RemoteWebElement
  • SafariDriver

SearchContext只有两种方法:


示例

使用SearchContext的{​​{3}}如下:

@Override
public List<WebElement> findElements(SearchContext searchContext) {
    List<WebElement> elements = new ArrayList<>();
    try {
        elements.add(this.findElement(searchContext));
    } catch (Exception ex) {

    }
    return elements;
}

答案 1 :(得分:0)

这是最好的博客,可以清楚地回答以下问题: http://makeseleniumeasy.com/2017/04/02/hierarchy-of-selenium-classes-and-interfaces/

要添加更多:

SearchContext驱动程序=新的C​​hromeDriver();

现在,如果您想使用WebDriver可用的抽象方法,例如get(String url),close(),quit()等,则必须将驱动程序实例下调到WebDriver级别:

(((WebDriver)driver).close();

答案 2 :(得分:0)

SearchContext是Webdriver和WebElement接口的superInterface。如先前的回答所述,searchContext只有两个抽象方法。

findElement(By by)
findElements(By by)

如果我们使用searchContext创建对象,则只能使用上面指定的方法。

WebDriver有许多有用且必需的方法,例如get,getTitle,close,quit,switchTo等。 除非您向下转换为Webdriver,否则无法直接使用这些webdriver方法。 因此,建议使用

WebDriver driver = new FirefoxDriver()

答案 3 :(得分:0)

SearchContext是WebDriver和WebElement接口的超级接口。 因此,SearchContext和WebDriver之间具有父子关系。 SearchElement只有两种抽象方法:

  1. WebElement findElement(by by)
  2. java.util.List findElements(by by):返回WebElement的列表 另一方面,WebDriver界面也有许多抽象方法。 SerachContext和Webdriver接口的所有抽象方法都在RemoteWebDriver类中实现。 这些链接将帮助您了解: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/SearchContext.html https://www.javadoc.io/doc/org.seleniumhq.selenium/selenium-api/2.50.1/org/openqa/selenium/WebDriver.html