我想使用 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"));
}
Run Code Online (Sandbox Code Playgroud)
而不是这样的东西
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"));
}
}
Run Code Online (Sandbox Code Playgroud)
它可能看起来有点混乱,但基本上我希望能够将 WebElement 而不是 WebDriver 设置为起点,而不必在每次想要获取元素时执行 if 语句或使用两种不同的方法。因为有时我想使用 WebDriver 作为根,有时想使用 Webelement,而无需使用 get 代码更改任何内容。有可能吗?是的,我知道这可能不是最佳实践,只是想知道这是否可能。
不,WebElement并且WebDriver不是彼此的后代。
如果您IWebElement恰好是 a ,那么您RemoteWebElement可以获得IWebDriver
var remoteElement = (RemoteWebElement)element;
var webDriver = remoteElement.WrappedDriver;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6456 次 |
| 最近记录: |