java - 有没有办法在同一方法中传递不同(但特定)类型的对象,并根据对象的类型有不同的处理方式
问题描述
我必须编写一个方法来单击网页上存在的元素。问题是我的方法中只能有两种类型的对象中的一种,即“WebElement”对象或“By”对象。因此,为了做到这一点,我必须为两个重载方法编写重复的代码行,如下所示:
public void clickElement(WebElement element) {
Line 1;
Line 2;
element.click();
Line 3;
}
public void clickElement(By locator) {
Line 1;
Line 2;
driver.findElement(locator).click();
Line 3;
}
是否可以只编写一种方法,该方法只能采用两种类型的对象中的一种并相应地表现?像这样的东西:
public void clickElement(WebElement element **OR** By locator) {
Line 1;
Line 2;
element.click; **OR** driver.findElement(locator).click();
Line 3;
}
Let me know if my question needs more clarification or inputs.
解决方案
我没有使用硒。根据您的代码,我假设driver.findElement()
returnWebElement
和 Line 1, 2, 3 在两种方法中完全相同。如果是这种情况,我能想到的最好的实现方法如下。
public void clickElement(WebElement element) {
Line 1;
Line 2;
element.click();
Line 3;
}
public void clickElement(By locator) {
clickElement(driver.findElement(locator));
}
通过这样做,我们可以最大限度地重用代码,同时保留方法签名,该签名强制可以传递给这些方法的类的类型。
推荐阅读
- html - 发送网站链接失败
- angular - ejs-pager click 和 dropDownChanged 方法同时调用问题
- flutter - 如何动态检查我在颤振中录制的复选框
- go - 使用标准库的 fork 来修补 go/ast
- html - 将鼠标悬停在另一个表格的行上时显示表格
- python-3.x - 如何将 python dict 转换为 DictRow 对象
- asp.net - ASP.NET 无序处理请求
- ignite - Apache Ignite、没有过滤器的扫描查询和缓存迭代器,都返回空结果集。缓存中的条目数非零
- tensorflow - TensorFlow 2.2 中如何替换 tf.contrib.seq2seq.TrainingHelper
- c++ - 请解释字谜的代码,我无法理解计数器数组,每个值已经是 0