java - 您可以将 WebElement 转换为 WebDriver 吗?

标签 java selenium

我想使用 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/

相关文章:

java - Selenium , java 。需要通过 Xpath 选择表内的祖先元素

java - 使用 http 请求自动化与 selenium webdriver 之间有什么区别?

java - 调整浏览器窗口大小后无法从元素获取文本(Chrome)

python - 元素可点击但 "not attached to the page document"(StaleElementReferenceException)?

java - 使用 ArrayList 创建 jTable

java - 添加代码打包私有(private)库方法

java - JBoss 7.1.1 中的 CORBA 配置,无法获取 NameService

java - 如何检查 URL 是否包含 botw.org 上的链接?

java - Android 中缺少plugin.xml

python - Selenium 测试套件只打开浏览器一次