当我在下面的代码中执行代码时,代码完全正常
WebElement element = driver.findElement(By.xpath("String1"));
element.findElement(By.xpath("String2"));
但是当我们按照以下方式行事时
WebElement element = driver.findElement(By.xpath("String1"));
element.convertStringToXpath("String2");
// Method written in some other class
public WebElement convertStringToXpath(String xpath) {
return driver.findElement(By.xpath(xpath));
}
我收到如下错误 对于WebElement类型
,方法convertStringToXpath(String)未定义任何人都可以解释两者之间的区别
答案 0 :(得分:2)
让我们看看你的两个代码块中发生了什么:
WebElement element = driver.findElement(By.xpath("String1"));
element.findElement(By.xpath("String2");
在此代码块中,我们使用名称 WebElement
定义了element
,并在整个范围内分配了由(By.xpath("String1"))
标识的节点 DOM Tree
实例即WebDriver
可访问 driver
。接下来,我们使用此WebElement
的引用,即 element
来标识{strong} {(By.xpath("String2"))
内scope
标识的另一个节点1}} 强>
element
在此块中,我们还使用名称 WebElement element = driver.findElement(By.xpath("String1"));
element.convertStringToXpath("String2");
// Method written in some other class
public WebElement convertStringToXpath(String xpath) {
return driver.findElement(By.xpath(xpath));
}
定义了WebElement
,并在element
范围内分配了由(By.xpath("String1"))
标识的节点。整个 DOM Tree
可供 WebDriver
实例driver
访问。接下来,您尝试通过 convertStringToXpath()
调用自定义方法 element
。但 element
的类型为 WebElement
。 convertStringToXpath()
是一种自定义方法,未在 WebElement
界面中定义。因此,您会看到错误方法convertStringToXpath(String)未定义类型WebElement
答案 1 :(得分:0)
convertStringToXpath
是您编写的一种方法,它不属于WebElement
API,因此您无法像这样使用它。这将有效
WebElement element = someOtherClassInstance.convertStringToXpath("String2");