我希望使用WebElement作为根元素来查找元素,而不是使用driver。我知道这是可能的,因为WebElement和WebDriver都扩展了SearchContext类。但我希望能够进行以下搜索。
WebDriver chromeDriver = new ChromeDriver();
WebDriver driver = chromeDriver;
// Set a new search root
public void setSearchRoot(){
if(i want a element as a root){
this.driver = (WebDriver)this.driver.findElement(By.xpath("PATH"));
}else{
this.driver = chromeDriver;
}
}
//find a element
public void findMyElement(){
this.driver.findElement(By.xpath("PATH"));
}
使用这样的方式代替
WebDriver driver = new ChromeDriver();
WebDriver rootElement = this.driver.findElement(By.xpath("PATH"));
//find a element
public void findMyElement(){
if(i want a element as a root){
this.rootElement.findElement(By.xpath("PATH"));
}else{
this.driver.findElement(By.xpath("PATH"));
}
}
看起来有点凌乱,但基本上我想能够将WebElement设置为起点,而不必进行if语句或使用两种不同的方法来获取元素,并且无论何时我想要获取元素,有时候我想使用WebDriver作为根节点,有时候我想使用WebElement作为根节点,而这一切都不需要改变代码。这是否可能呢?是的,我知道这可能不是最佳实践,只是想知道是否可能。