是否可以使用java为各种元素定位器

时间:2018-06-12 16:56:57

标签: java selenium-webdriver

是否可以根据定位器类型(如xpath,id,css等)重载辅助方法以单击元素。

我写了这样的代码

import org.openqa.selenium.By; import org.openqa.selenium.By.ById;

公共类AutomationHelper {

public static void clickElement(By xpath){

}
public static void clickElement(By Id){

}

}

我想从我的测试类中调用这样的方法

AutomationHelper.clickElement(ID); AutomationHelper.clickElement(Xpath的);等

请帮忙。感谢

2 个答案:

答案 0 :(得分:0)

重载用于发送数据类型的不同组合(一个int,或一个String,以及intString)对于单一方法,但您正在做的是发送具有不同值的相同数据类型,并认为它将被区别对待;以某种方式推断元数据。

同样在您的示例中,您只是发送,但您并未发送任何类型的路径。所以,你让这个方法知道将某些东西解释为xpath或CSS字符串,但你实际上并没有发送这些东西。

但我认为你真正想要的是,你希望通过发送某种路径的字符串,元数据会以某种方式让方法知道如何处理它。

您需要创建多个方法:

public static void clickElementByXpath(String path) {}
public static void clickElementByCss(String path) {}

或一个有更多参数的方法:

public static void clickElement(String by, String path) {}

答案 1 :(得分:0)

您不需要重载来执行此操作。你可以使用

public static void clickElement(By locator)
{
    driver.findElement(locator).click();
}

您可以将它与任何定位器类型一起使用,例如

By someButton = By.id("buttonId");
By someLink = By.linkText("myLink");
By someDiv = By.xpath("//div[.='containedText']");

并将其称为

clickElement(someButton);
clickElement(someLink);
clickElement(someDiv);