是否可以根据定位器类型(如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的);等
请帮忙。感谢
答案 0 :(得分:0)
否强>
重载用于发送数据类型的不同组合(一个int
,或一个String
,以及int
和String
)对于单一方法,但您正在做的是发送具有不同值的相同数据类型,并认为它将被区别对待;以某种方式推断元数据。
同样在您的示例中,您只是发送按,但您并未发送任何类型的路径。所以,你让这个方法知道将某些东西解释为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);