selenium中的element.findElement()方法如何工作[不是driver.findElement()]

时间:2017-11-23 06:33:01

标签: java selenium selenium-webdriver webdriver

当我在下面的代码中执行代码时,代码完全正常

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)未定义

任何人都可以解释两者之间的区别

2 个答案:

答案 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");