我在某个地方可以同时使用
WebDriver driver = new FirefoxDriver()
或
SearchContext driver = new FirefoxDriver()
我很困惑,这两个不同的界面有什么区别?
答案 0 :(得分:1)
SearchContext是一个接口,是用于应用程序搜索的上下文信息的运行时容器。它包含与搜索有关的元信息,并且可以保存对外部上下文的引用,这可能对搜索和安全性有用。用于搜索时,它包含对AppsWebContext的引用,并且可以通过getAppsContext获得。此上下文将传递给大多数应用程序插件代码,在这些代码中,自定义实现可以获取运行时上下文信息。
SearchContext接口具有2个(两个)子接口:
实现类为:
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驱动程序=新的ChromeDriver();
现在,如果您想使用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只有两种抽象方法: