我想使用 WebElement 作为根来查找元素而不是驱动程序。我知道这是可能的,因为 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 设置为起点而不是 WebDriver,而无需执行 if 语句或在我想要获取元素时使用两种不同的方法。因为有时我想使用 WebDriver 作为根,有时想使用 Webelement,而无需更改获取代码的任何内容。有可能吗?是的,我知道这可能不是最佳实践,只是想知道是否可能。
最佳答案
使用 OpenQA.Selenium.Support.UI;
如果元素是 的类型ISearchContext 或 IWebElement
然后这个 Actor 对我有用
var driver = ((IWrapsDriver)element).WrappedDriver;
关于java - 您可以将 WebElement 转换为 WebDriver 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413307/